Ho una solida conoscenza della maggior parte della teoria OO, ma l'unica cosa che mi confonde molto sono i distruttori virtuali. Ho pensato che il distruttore venisse sempre chiamato, non importa cosa e per ogni oggetto nella catena. Quando hai intenzione di renderli virtuali e perché?
std::shared_ptr<Object> p1 = std::make_shared<Object>("foo"); std::shared_ptr<Object> p2(new Object("foo")); Ci sono molti post su Google e StackOverflow, ma non riesco a capire perché make_sharedsia più efficiente dell'utilizzo diretto shared_ptr. Qualcuno può spiegarmi passo dopo passo la sequenza di oggetti creati e le operazioni eseguite da entrambi in modo che io possa capire …
Quando una funzione prende un shared_ptr(da boost o C ++ 11 STL), la stai passando: per riferimento const: void foo(const shared_ptr<T>& p) o per valore void foo(shared_ptr<T> p):? Preferirei il primo metodo perché sospetto che sarebbe più veloce. Ma ne vale davvero la pena o ci sono altri problemi? Potresti …
Ho iniziato a studiare i puntatori intelligenti di C ++ 11 e non vedo alcun uso utile di std::weak_ptr. Qualcuno può dirmi quando std::weak_ptrè utile / necessario?
Ho questo codice che non funziona, ma penso che l'intento sia chiaro: testmakeshared.cpp #include <memory> class A { public: static ::std::shared_ptr<A> create() { return ::std::make_shared<A>(); } protected: A() {} A(const A &) = delete; const A &operator =(const A &) = delete; }; ::std::shared_ptr<A> foo() { return A::create(); } Ma …
Solo una piccola domanda riguardante shared_ptr. È buona norma utilizzare il shared_ptrpuntamento a un array? Per esempio, shared_ptr<int> sp(new int[10]); Se no, allora perché no? Uno dei motivi di cui sono già a conoscenza è che non è possibile aumentare / diminuire il shared_ptr. Quindi non può essere usato come …
Sto riscontrando problemi nel comprendere l'utilizzo dei puntatori intelligenti come membri della classe in C ++ 11. Ho letto molto sui puntatori intelligenti e penso di capire come unique_ptre shared_ptr/ o weak_ptrlavorare in generale. Quello che non capisco è il reale utilizzo. Sembra che tutti raccomandino di usarlo unique_ptrcome modo …
Ho cercato il codice sorgente di Clang e ho trovato questo frammento: void CompilerInstance::setInvocation( std::shared_ptr<CompilerInvocation> Value) { Invocation = std::move(Value); } Perché dovrei voler std::moveun std::shared_ptr? C'è qualche punto che trasferisce la proprietà su una risorsa condivisa? Perché non dovrei fare questo invece? void CompilerInstance::setInvocation( std::shared_ptr<CompilerInvocation> Value) { Invocation = …
Ho trovato del codice usando std :: shared_ptr per eseguire una pulizia arbitraria allo spegnimento. Inizialmente pensavo che questo codice non potesse funzionare, ma poi ho provato quanto segue: #include <memory> #include <iostream> #include <vector> class test { public: test() { std::cout << "Test created" << std::endl; } ~test() { …
Sto scrivendo un metodo di accesso per un puntatore condiviso in C ++ che funziona in questo modo: class Foo { public: return_type getBar() const { return m_bar; } private: boost::shared_ptr<Bar> m_bar; } Quindi per supportare la costanza del getBar()tipo restituito dovrebbe essere un boost::shared_ptrche impedisce la modifica del Barpunto …
Se ho una funzione che deve funzionare con a shared_ptr, non sarebbe più efficiente passarle un riferimento (in modo da evitare di copiare l' shared_ptroggetto)? Quali sono i possibili effetti collaterali negativi? Immagino due possibili casi: 1) all'interno della funzione viene creata una copia dell'argomento, come in ClassA::take_copy_of_sp(boost::shared_ptr<foo> &sp) { …
Sto leggendo http://gcc.gnu.org/onlinedocs/libstdc++/manual/shared_ptr.html e alcuni problemi di thread safety non sono ancora chiari per me: Lo standard garantisce che il conteggio dei riferimenti sia gestito thread-safe e sia indipendente dalla piattaforma, giusto? Problema simile: lo standard garantisce che solo un thread (tenendo l'ultimo riferimento) chiamerà l'eliminazione sull'oggetto condiviso, giusto? shared_ptr …
Sono così frustrato in questo momento dopo diverse ore che provo a trovare dove si trova shared_ptr. Nessuno degli esempi che vedo mostra il codice completo per includere le intestazioni per shared_ptr(e funzionante). Semplicemente affermando std, tr1e <memory>non aiuta affatto! Ho scaricato potenziamenti e tutto ma ancora non viene visualizzato! …
Attualmente sto cercando di imparare a utilizzare i puntatori intelligenti. Tuttavia durante alcuni esperimenti ho scoperto la seguente situazione per la quale non sono riuscito a trovare una soluzione soddisfacente: Immagina di avere un oggetto di classe A che è genitore di un oggetto di classe B (il bambino), ma …
La domanda rientra davvero nel titolo: sono curioso di sapere qual è la ragione tecnica di questa differenza, ma anche la logica? std::shared_ptr<void> sharedToVoid; // legal; std::unique_ptr<void> uniqueToVoid; // ill-formed;
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.