Heim > Backend-Entwicklung > C++ > Wie kann ich einen benutzerdefinierten Löscher mit einer „std::unique_ptr'-Mitgliedsvariablen verwenden?

Wie kann ich einen benutzerdefinierten Löscher mit einer „std::unique_ptr'-Mitgliedsvariablen verwenden?

Barbara Streisand
Freigeben: 2024-12-18 12:22:10
Original
518 Leute haben es durchsucht

How Can I Use a Custom Deleter with a `std::unique_ptr` Member Variable?

Verwenden eines benutzerdefinierten Löschers mit einem std::unique_ptr-Mitglied

Bei der Arbeit mit einem std::unique_ptr-Mitglied in einer Klasse gibt es Fälle, in denen ein benutzerdefinierter Löscher möglicherweise verwendet wird erforderlich sein. Dies ist besonders relevant, wenn das Mitgliedsobjekt bestimmte Bereinigungs- oder Zerstörungsverfahren erfordert.

Stellen Sie sich ein Szenario vor, in dem Ihre Klasse ein Mitglied std::unique_ptr hat und Bar eine Klasse eines Drittanbieters mit eigener Erstellung ist () und destroy() Funktionen. Um den eindeutigen Besitz dieses Mitglieds zu verwalten, kann ein benutzerdefinierter Löscher implementiert werden.

In einer eigenständigen Funktion könnten Sie einen std::unique_ptr mit einem benutzerdefinierten Löscher wie folgt verwenden:

void foo() {
    std::unique_ptr<Bar, void(*)(Bar*)> bar(create(), [](Bar* b) { destroy(b); });
    ...
}
Nach dem Login kopieren

Jetzt passen wir diesen Ansatz an eine Situation an, in der std::unique_ptr als Mitglied in einer Klasse namens verwendet wird Foo:

class Foo {
private:
    std::unique_ptr<Bar, void(*)(Bar*)> bar_;
    ...
public:
    Foo() : bar_(create(), destroy) { /* ... */ }
    // ...
};
Nach dem Login kopieren

Beachten Sie, dass in dieser Implementierung kein Lambda oder benutzerdefinierter Löscher erforderlich ist, da destroy selbst als Löscher dient. Dies ermöglicht eine saubere und übersichtliche Möglichkeit, den eindeutigen Besitz des Anwaltsmitglieds zu verwalten und gleichzeitig sein individuelles Vernichtungsverfahren zu nutzen.

Das obige ist der detaillierte Inhalt vonWie kann ich einen benutzerdefinierten Löscher mit einer „std::unique_ptr'-Mitgliedsvariablen verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage