Menggunakan Penghapus Tersuai dengan Ahli std::unique_ptr
Dalam pengaturcaraan, menggunakan pemadam tersuai dengan ahli std::unique_ptr boleh memberikan yang lebih besar kawalan ke atas pemusnahan objek. Artikel ini bertujuan untuk menangani persoalan tentang cara memasukkan pemadam tersuai dalam struktur kelas.
Pertimbangkan senario di mana kelas, Foo, mengandungi ahli jenis std::unique_ptr
void foo() { std::unique_ptr<Bar, void(*)(Bar*)> bar(create(), [](Bar* b){ destroy(b); }); }
Pendekatan ini membenarkan spesifikasi pemadam tersuai menggunakan ungkapan lambda. Timbul persoalan: adakah terdapat cara untuk meniru tingkah laku ini apabila std::unique_ptr digunakan sebagai ahli kelas?
Penyelesaian: Penghapus Tersuai untuk Ahli Kelas
Dengan mengandaikan bahawa mencipta dan memusnahkan adalah fungsi percuma, penyelesaian berikut boleh dilaksanakan:
class Foo { std::unique_ptr<Bar, void(*)(Bar*)> ptr_; // ... public: Foo() : ptr_(create(), destroy) { /* ... */ } // ... };
Dalam senario ini, pemadam tersuai disediakan terus dalam definisi kelas. Fungsi musnah digunakan sebagai pemadam, menafikan keperluan untuk ungkapan lambda. Pendekatan ini memastikan objek Bar dimusnahkan dengan betul apabila objek Foo terkeluar dari skop.
Atas ialah kandungan terperinci Bagaimana untuk Menggunakan Penghapus Tersuai dengan Ahli Kelas `std::unique_ptr`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!