Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menggantikan Pemadaman Lalai dengan Pemusnah Tersuai untuk Penunjuk Dikongsi Boost?
Menggantikan Pemadaman Lalai dengan Pemusnah Tersuai untuk Penunjuk Dikongsi
Share_ptr Boost biasanya menggunakan fungsi padam untuk memusnahkan objek yang diperuntukkan. Walau bagaimanapun, terdapat senario di mana pembangun mungkin mahu menggunakan pemusnah tersuai.
Mengatasi Pemadaman Lalai
Untuk mengatasi kelakuan pemadaman lalai, anda boleh menggunakan fungsi ahli sebagai pemusnah tersuai. Contohnya:
<code class="cpp">class CustomDeletable { public: void deleteMe() { // Implement custom deletion logic here } }; boost::shared_ptr<CustomDeletable> ptr(new CustomDeletable, &CustomDeletable::deleteMe);</code>
Mengendalikan Fungsi Gaya C
Untuk fungsi gaya C yang mengembalikan penunjuk, anda boleh menggunakan functor pembalut untuk mengubah hala proses pemadaman:
<code class="cpp">// Custom destructor functor for C-style functions struct LibFreeFunctor { void operator()(void *ptr) { lib_freeXYZ(ptr); } }; // Usage with shared_ptr boost::shared_ptr<void> ptr(new void*, LibFreeFunctor());</code>
Menggunakan Fungsi Pembungkus STL
Sebagai alternatif, STL menyediakan fungsi pembungkus yang boleh digunakan tanpa memerlukan pemanggil tersuai:
<code class="cpp">boost::shared_ptr<T> ptr(new T, std::mem_fun_ref(&T::deleteMe)); boost::shared_ptr<S> ptr(new S, std::ptr_fun(lib_freeXYZ));</code>
Dengan menggunakan teknik ini, anda boleh menyesuaikan shared_ptr untuk memanggil pemusnah tersuai, memberikan fleksibiliti dalam mengurus jangka hayat objek dan penetapan peruntukan sumber.
Atas ialah kandungan terperinci Bagaimana untuk Menggantikan Pemadaman Lalai dengan Pemusnah Tersuai untuk Penunjuk Dikongsi Boost?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!