Heim >Backend-Entwicklung >C++ >Wie stellt std::shared_ptr ordnungsgemäße Destruktoraufrufe während der Bereinigung sicher?
Einführung
Die Verwendung von std::shared_ptr
Geben Sie Erasure in std::shared_ptr ein
Der Schlüssel zu Das Verständnis dieses Verhaltens liegt in der Art und Weise, wie std::shared_ptr die Typlöschung durchführt. Bei der Erstellung speichert ein gemeinsam genutzter Zeiger eine Löschfunktion, die bestimmt, wie sein verwaltetes Objekt zerstört werden soll. Dieser Löscher kann explizit angegeben werden oder löscht das Objekt standardmäßig mit delete.
Destruktorinformationen beibehalten
Wenn ein shared_ptr kopiert oder aus einem anderen erstellt wird, ist die Löschfunktion gleich konserviert. Dies bedeutet, dass auch beim Casting von std::shared_ptr
Beispieldarstellung
Der in der Frage bereitgestellte Code demonstriert diese Funktionalität. Die folgenden Zeilen erklären das Verhalten:
<code class="cpp">v.push_back(std::shared_ptr<test>(new test()));</code>
Hier wird ein shared_ptr für eine Instanz der Klasse test erstellt und dem Vektor v hinzugefügt.
<code class="cpp">v.push_back(static_cast<std::shared_ptr<void>>(v.back()));</code>
Der zu testende shared_ptr ist dann explizit in std::shared_ptr
Konformität mit dem Standard
Das Verhalten von std::shared_ptr
Fazit
Während std::shared_ptr
Das obige ist der detaillierte Inhalt vonWie stellt std::shared_ptr ordnungsgemäße Destruktoraufrufe während der Bereinigung sicher?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!