Memahami Kepentingan enable_shared_from_this
Soalan:
Semasa menerokai Boost,.Asi ramai pembangun menghadapi enable_shared_from_this konsep. Walaupun membaca dokumentasi, aplikasi praktikalnya masih tidak jelas. Bolehkah anda memberikan contoh dan menerangkan apabila menggunakan kelas ini adalah sesuai?
Jawapan:
enable_shared_from_this memberikan keupayaan untuk mendapatkan contoh shared_ptr yang sah kepada "ini," walaupun dalam situasi di mana hanya "ini" tersedia. Ketiadaan keupayaan ini, mendapatkan shared_ptr kepada "ini" akan memerlukan satu telah ditakrifkan sebagai ahli.
Pertimbangkan contoh berikut daripada dokumentasi Boost:
class Y: public enable_shared_from_this<Y> { public: shared_ptr<Y> f() { return shared_from_this(); } }; int main() { shared_ptr<Y> p(new Y); shared_ptr<Y> q = p->f(); assert(p == q); assert(!(p < q || q < p)); // p and q must share ownership }
Kaedah f() kembali shared_ptr yang sah walaupun tidak mempunyai contoh ahli.
Adalah penting untuk ambil perhatian bahawa hanya mengembalikan shared_ptr dibina dengan "ini" sebagai hujah bukanlah penyelesaian yang boleh diterima, kerana ia akan menghasilkan kiraan rujukan yang berbeza daripada rujukan "kongsi" yang sah. Akibatnya, salah satu petunjuk yang dikongsi mungkin berakhir dengan rujukan berjuntai semasa pemadaman objek.
enable_shared_from_this kini merupakan sebahagian daripada standard C 11, menjadikannya boleh diakses melalui kedua-dua C 11 dan Boost.
Atas ialah kandungan terperinci Bila dan Bagaimana Anda Harus Menggunakan `dayakan_kongsi_daripada_ini` dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!