Dalam perbahasan baru-baru ini, Daniel Lidström menegaskan bahawa shared_ptr
Melaksanakan Shared_Ptr Tanpa Pemusnah Maya
Kunci kepada pelaksanaan ini terletak pada pemadaman jenis. Shared_ptr menyimpan lebih daripada sekadar kaunter rujukan; ia termasuk pemadam (disimpan sebagai sebahagian daripada struktur data) yang mengendalikan pemusnahan objek. Pemadam ini boleh terdiri daripada sebarang jenis, membenarkan penyesuaian di luar skop T (jenis templat shared_ptr).
Penyesuaian untuk Kelas Terbitan
Apabila membuat shared_ptr< ;Asas> daripada objek Terbitan, pembina templat digunakan, membenarkan spesifikasi jenis Terbitan konkrit. Pembina mencipta pemadam yang diperlukan dengan pengetahuan tentang jenis dinamik, memastikan pemusnahan objek yang betul walaupun tanpa pemusnah maya dalam Pangkalan.
Contoh Pelaksanaan
template<class T> class shared_ptr { public: ... template<class Y> explicit shared_ptr(Y* p); ... };
Perkara di atas pembina membenarkan penciptaan shared_ptr
C 11 Keperluan Standard
Standard C 11 secara eksplisit memerlukan tingkah laku ini:
Atas ialah kandungan terperinci Bolehkah `shared_ptr` Menguruskan Objek `Derived` Tanpa Pemusnah Maya dalam `Base`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!