Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah `dayakan_kongsi_daripada_ini` Menyelesaikan Isu Pemilikan Penunjuk Dikongsi dalam C ?
Bagaimanakah enable_shared_from_this Membantu dalam Mengekalkan Pemilikan Objek?
Semasa meneroka contoh Boost.Asio, anda mungkin pernah menemui enable_shared_from_this. Walaupun merujuk kepada dokumentasi, penggunaannya masih tidak jelas. Berikut ialah penjelasan komprehensif dan contoh untuk menjelaskan tujuannya.
enable_shared_from_this membolehkan anda mencipta contoh shared_ptr yang sah untuk objek apabila anda hanya mempunyai akses kepada objek itu sendiri (diwakili oleh ini). Tanpanya, mendapatkan shared_ptr untuk ini adalah mustahil melainkan ia telah ditakrifkan sebagai ahli.
Pertimbangkan contoh berikut:
class Y: public enable_shared_from_this<Y> { public: shared_ptr<Y> f() { return shared_from_this(); } };
Di sini, kaedah f() boleh mengembalikan yang sah shared_ptr, walaupun ia tidak mempunyai contoh ahli. Ambil perhatian bahawa pendekatan berikut akan gagal:
class Y: public enable_shared_from_this<Y> { public: shared_ptr<Y> f() { return shared_ptr<Y>(this); } };
Hasilnya ialah dua shared_ptrs dengan kiraan rujukan yang berbeza. Apabila objek dipadamkan, salah satu daripadanya akan menjadi rujukan yang tergantung.
Adalah penting untuk ambil perhatian bahawa enable_shared_from_this kini merupakan sebahagian daripada standard C 11, menjadikannya boleh diakses dari sana dan juga dari Boost.
Atas ialah kandungan terperinci Bagaimanakah `dayakan_kongsi_daripada_ini` Menyelesaikan Isu Pemilikan Penunjuk Dikongsi dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!