Als «shared-ptr» getaggte Fragen

Referenzgezählte Smart-Pointer-Klasse, die Shared Ownership implementiert


8
Unterschied zwischen make_shared und normal shared_ptr in C ++
std::shared_ptr<Object> p1 = std::make_shared<Object>("foo"); std::shared_ptr<Object> p2(new Object("foo")); Es gibt viele Google- und Stackoverflow-Posts, aber ich kann nicht verstehen, warum dies make_sharedeffizienter ist als die direkte Verwendung shared_ptr. Kann mir jemand Schritt für Schritt erklären, wie Objekte erstellt und von beiden ausgeführt werden, damit ich verstehen kann, wie make_sharedeffizient sie sind? …
275 c++  c++11  shared-ptr 

10
Sollten wir ein shared_ptr als Referenz oder als Wert übergeben?
Wenn eine Funktion eine shared_ptr(von Boost oder C ++ 11 STL) benötigt, übergeben Sie sie: durch konstante Referenz: void foo(const shared_ptr<T>& p) oder nach Wert : void foo(shared_ptr<T> p)? Ich würde die erste Methode bevorzugen, weil ich vermute, dass sie schneller sein würde. Aber lohnt sich das wirklich oder gibt …
269 c++  c++11  boost  shared-ptr 


16
Wie rufe ich :: std :: make_shared für eine Klasse mit nur geschützten oder privaten Konstruktoren auf?
Ich habe diesen Code, der nicht funktioniert, aber ich denke, die Absicht ist klar: 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(); …
185 c++  c++11  shared-ptr 

2
shared_ptr zu einem Array: sollte es verwendet werden?
Nur eine kleine Frage zu shared_ptr. Ist es eine gute Praxis, shared_ptrauf ein Array zu zeigen? Beispielsweise, shared_ptr<int> sp(new int[10]); Wenn nicht, warum dann nicht? Ein Grund, den ich bereits kenne, ist, dass man das nicht erhöhen / verringern kann shared_ptr. Daher kann es nicht wie ein normaler Zeiger auf …
172 c++  c++11  shared-ptr 

2
Verwenden intelligenter Zeiger für Klassenmitglieder
Ich habe Probleme, die Verwendung intelligenter Zeiger als Klassenmitglieder in C ++ 11 zu verstehen. Ich habe viel über intelligente Zeiger gelesen und glaube zu verstehen, wie unique_ptrund shared_ptr/ oder wie ich weak_ptrim Allgemeinen arbeite. Was ich nicht verstehe, ist die tatsächliche Verwendung. Es scheint, als würde jeder empfehlen unique_ptr, …

6
Warum sollte ich std :: move std :: shared_ptr verschieben?
Ich habe den Clang-Quellcode durchgesehen und diesen Ausschnitt gefunden: void CompilerInstance::setInvocation( std::shared_ptr<CompilerInvocation> Value) { Invocation = std::move(Value); } Warum sollte ich will std::moveein std::shared_ptr? Gibt es einen Grund, das Eigentum an einer gemeinsam genutzten Ressource zu übertragen? Warum sollte ich das nicht einfach stattdessen tun? void CompilerInstance::setInvocation( std::shared_ptr<CompilerInvocation> Value) { …

6
Warum funktioniert std :: shared_ptr <void>?
Ich habe Code gefunden, der std :: shared_ptr verwendet, um beim Herunterfahren eine beliebige Bereinigung durchzuführen. Zuerst dachte ich, dieser Code könnte unmöglich funktionieren, aber dann habe ich Folgendes versucht: #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
Unterschied zwischen "const shared_ptr <T>" und "shared_ptr <const T>"?
Ich schreibe eine Zugriffsmethode für einen gemeinsam genutzten Zeiger in C ++, die ungefähr so ​​aussieht: class Foo { public: return_type getBar() const { return m_bar; } private: boost::shared_ptr&lt;Bar&gt; m_bar; } Um die Konstanz des getBar()Rückgabetyps zu unterstützen, sollte ein Wert verwendet werden boost::shared_ptr, der eine Änderung des Zeigertyps verhindert …
115 c++  boost  const  shared-ptr 

3
std :: shared_ptr Thread-Sicherheit erklärt
Ich lese http://gcc.gnu.org/onlinedocs/libstdc++/manual/shared_ptr.html und einige Probleme mit der Thread-Sicherheit sind mir immer noch nicht klar: Standard garantiert, dass die Referenzzählung threadsicher und plattformunabhängig ist, oder? Ähnliches Problem - Standard garantiert, dass nur ein Thread (der die letzte Referenz enthält) delete für ein freigegebenes Objekt aufruft, oder? shared_ptr garantiert keine Thread-Sicherheit …
106 c++  c++11  shared-ptr 

4
Wo ist shared_ptr?
Ich bin gerade so frustriert, nachdem ich mehrere Stunden lang versucht habe herauszufinden, wo sich shared_ptr befindet. Keines der Beispiele, die ich sehe, zeigt vollständigen Code, der die Überschriften für shared_ptr(und das Arbeiten) enthält. Einfach gesagt std, tr1und &lt;memory&gt;hilft überhaupt nicht! Ich habe Boosts heruntergeladen und alles, aber es wird …

2
std :: shared_ptr davon
Ich versuche gerade zu lernen, wie man intelligente Zeiger verwendet. Bei einigen Experimenten entdeckte ich jedoch die folgende Situation, für die ich keine zufriedenstellende Lösung finden konnte: Stellen Sie sich vor, Sie haben ein Objekt der Klasse A als Eltern eines Objekts der Klasse B (das Kind), aber beide sollten …


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.