Heim > Backend-Entwicklung > C++ > Wie kann ich den Löschvorgang von „boost::shared_ptr' anpassen?

Wie kann ich den Löschvorgang von „boost::shared_ptr' anpassen?

DDD
Freigeben: 2024-10-26 21:45:29
Original
363 Leute haben es durchsucht

How Can I Customize the Deletion Process of `boost::shared_ptr`?

Benutzerdefinierte Löscher für boost::shared_ptr

Abfrage:

In bestimmten Szenarien Entwickler Möglicherweise muss das Verhalten des Löschvorgangs von boost::shared_ptr angepasst werden. Berücksichtigen Sie die folgenden Ziele:

  • Überschreiben Sie den standardmäßigen Löschoperator mit einer benutzerdefinierten Funktion ptr->deleteMe().
  • Behandeln Sie Funktionsrückgaben im C-Stil, die stattdessen lib_freeXYZ(ptr) erfordern des einfachen Löschens.

Lösung:

Die Verwendung der Standard Template Library (STL) bietet eine praktikable Lösung für diese Anforderungen:

<code class="cpp">// Custom deleter for shared_ptr that invokes ptr->deleteMe()
boost::shared_ptr<T> ptr(new T, std::mem_fun_ref(&T::deleteMe));

// Custom deleter for shared_ptr that invokes lib_freeXYZ(ptr)
boost::shared_ptr<S> ptr(new S, std::ptr_fun(lib_freeXYZ));</code>
Nach dem Login kopieren

Dieser Ansatz ermöglicht die gewünschte Anpassung des Löschvorgangs für beide boost::shared_ptr-Instanzen.

Das obige ist der detaillierte Inhalt vonWie kann ich den Löschvorgang von „boost::shared_ptr' anpassen?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage