
Smart-Pointer-Auswahlalgorithmus
Berücksichtigen Sie bei der Auswahl eines geeigneten Smart-Pointer-Typs die folgenden Kriterien:
Einzigartiges Eigentum:
-
Nutzung std::unique_ptr: Bietet exklusiven Besitz mit dem angegebenen Löscher. Kann in STL-Containern verwendet werden.
Geteiltes Eigentum:
-
Verwenden Sie std::shared_ptr und std::weak_ptr: Ermöglicht mehreren Eigentümern die gemeinsame Nutzung einer Ressource. Schwache Zeiger beobachten Ressourcen, ohne deren Lebensdauer zu beeinträchtigen.
Kein Eigentum:
-
Rohzeiger oder Referenzen verwenden: Für nicht - Besitz von Referenzen, wenn die Ressource das referenzierende Objekt überlebt. Verwenden Sie Rohzeiger für Nullbarkeit oder Rücksetzbarkeit.
Zusätzliche Überlegungen:
-
Boost::intrusive_ptr: Leichte Option für Ressourcen mit vorhandener Referenz gezählt Verwaltung.
-
Boost::scoped_array und std::unique_ptr: Array-Versionen von Bereichszeigern.
-
Veraltet: std::auto_ptr ist in C veraltet 11.
Empfehlung:
In den meisten Fällen sollte std::unique_ptr die Standardauswahl für eindeutigen Besitz sein. std::shared_ptr und std::weak_ptr eignen sich für Szenarios mit geteiltem Besitz. Rohzeiger und Referenzen können für nicht besitzende Beziehungen verwendet werden.
Das obige ist der detaillierte Inhalt vonWelchen Smart Pointer sollte ich in C verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!