Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menggunakan Pemadam Tersuai dengan Pembolehubah Ahli `std::unique_ptr`?

Bagaimanakah Saya Boleh Menggunakan Pemadam Tersuai dengan Pembolehubah Ahli `std::unique_ptr`?

Barbara Streisand
Lepaskan: 2024-12-18 12:22:10
asal
524 orang telah melayarinya

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

Menggunakan Pemadam Tersuai dengan Ahli std::unique_ptr

Apabila bekerja dengan ahli std::unique_ptr dalam kelas, terdapat keadaan di mana pemadam tersuai mungkin dikehendaki. Ini amat relevan apabila objek ahli memerlukan prosedur pembersihan atau pemusnahan khusus.

Pertimbangkan senario di mana kelas anda mempunyai ahli std::unique_ptr dan Bar ialah kelas pihak ketiga dengan ciptaannya sendiri () dan musnahkan() fungsi. Untuk mengendalikan pemilikan unik ahli ini, pemadam tersuai boleh dilaksanakan.

Dalam fungsi kendiri, anda boleh menggunakan std::unique_ptr dengan pemadam tersuai seperti:

void foo() {
    std::unique_ptr<Bar, void(*)(Bar*)> bar(create(), [](Bar* b) { destroy(b); });
    ...
}
Salin selepas log masuk

Sekarang, mari kita sesuaikan pendekatan ini kepada situasi di mana std::unique_ptr digunakan sebagai ahli dalam kelas yang dipanggil Foo:

class Foo {
private:
    std::unique_ptr<Bar, void(*)(Bar*)> bar_;
    ...
public:
    Foo() : bar_(create(), destroy) { /* ... */ }
    // ...
};
Salin selepas log masuk

Perhatikan bahawa tiada lambda atau pemadam tersuai diperlukan dalam pelaksanaan ini kerana musnah sendiri berfungsi sebagai pemadam. Ini membolehkan cara yang bersih dan ringkas untuk mengurus pemilikan unik ahli Peguam sambil menggunakan prosedur pemusnahan tersuainya.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Pemadam Tersuai dengan Pembolehubah Ahli `std::unique_ptr`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan