Domande taggate «shared-ptr»

Riferimento conteggiato classe puntatore intelligente che implementa proprietà condivisa


8
Differenza in make_shared e normale shared_ptr in C ++
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 …
276 c++  c++11  shared-ptr 

10
Dovremmo passare un shared_ptr per riferimento o per valore?
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 …
270 c++  c++11  boost  shared-ptr 


16
Come posso chiamare :: std :: make_shared su una classe con solo costruttori protetti o privati?
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 …
187 c++  c++11  shared-ptr 

2
shared_ptr a un array: dovrebbe essere usato?
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 …
172 c++  c++11  shared-ptr 


6
Perché dovrei std :: move an std :: shared_ptr?
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 = …

6
Perché std :: shared_ptr <void> funziona
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 &lt;memory&gt; #include &lt;iostream&gt; #include &lt;vector&gt; class test { public: test() { std::cout &lt;&lt; "Test created" &lt;&lt; std::endl; } ~test() { …
129 c++  c++11  shared-ptr 

4
Differenza tra "const shared_ptr <T>" e "shared_ptr <const T>"?
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&lt;Bar&gt; m_bar; } Quindi per supportare la costanza del getBar()tipo restituito dovrebbe essere un boost::shared_ptrche impedisce la modifica del Barpunto …
116 c++  boost  const  shared-ptr 

17
C ++ - passaggio di riferimenti a std :: shared_ptr o boost :: shared_ptr
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&lt;foo&gt; &amp;sp) { …

3
spiegazione della sicurezza del thread std :: shared_ptr
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 …
106 c++  c++11  shared-ptr 

4
Dov'è 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 &lt;memory&gt;non aiuta affatto! Ho scaricato potenziamenti e tutto ma ancora non viene visualizzato! …

2
std :: shared_ptr di questo
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 …


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.