Auf der Seite cplusplus.comshared_ptr
wird zwischen einer leeren std::shared_ptr
und einer Null unterschieden shared_ptr
. Die Seite cppreference.com ruft die Unterscheidung nicht explizit auf, sondern verwendet nullptr
in ihrer Beschreibung des std::shared_ptr
Verhaltens sowohl "leer" als auch Vergleich mit .
Gibt es einen Unterschied zwischen einer leeren und einer Null shared_ptr
? Gibt es einen Anwendungsfall für solche Zeiger mit gemischtem Verhalten? Ist eine nicht leere Null shared_ptr
überhaupt sinnvoll? Würde es im normalen Gebrauch jemals einen Fall geben (dh wenn Sie keinen explizit konstruiert hätten), in dem Sie am Ende eine leere, aber nicht null haben könnten shared_ptr
?
Und ändert sich eine dieser Antworten, wenn Sie die Boost-Version anstelle der C ++ 11-Version verwenden?
shared_ptr
Instanz mit einem nicht NULL gespeicherten Zeiger." Erwähnenswert ist auch der vorstehende Hinweis (S. 15): "Um die Möglichkeit eines baumelnden Zeigers zu vermeiden, muss der Benutzer dieses Konstruktors sicherstellen, dass dieserp
mindestens so lange gültig bleibt, bis die Eigentümergruppe vonr
zerstört wird." Eine selten verwendete Konstruktion.