Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menyesuaikan Proses Pemadaman `boost::shared_ptr`?

Bagaimanakah Saya Boleh Menyesuaikan Proses Pemadaman `boost::shared_ptr`?

DDD
DDDasal
2024-10-26 21:45:29351semak imbas

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

Penghapus Tersuai untuk rangsangan::shared_ptr

Pertanyaan:

Dalam senario tertentu, pembangun mungkin menghadapi keperluan untuk menyesuaikan tingkah laku proses pemadaman boost::shared_ptr. Pertimbangkan objektif berikut:

  • Timpa pengendali padam lalai dengan fungsi tersuai ptr->deleteMe().
  • Kendalikan pengembalian fungsi gaya C yang memerlukan lib_freeXYZ(ptr) sebaliknya daripada padam biasa.

Penyelesaian:

Menggunakan Perpustakaan Templat Standard (STL) menawarkan penyelesaian yang berdaya maju untuk keperluan ini:

<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>

Pendekatan ini membolehkan penyesuaian proses pemadaman yang dikehendaki untuk kedua-dua rangsangan::shared_ptr.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyesuaikan Proses Pemadaman `boost::shared_ptr`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn