Pelaksanaan Shared_Ptr Tanpa Pemusnah Maya Kelas Polimorfik
Dalam perdebatan antara Armen Tsirunyan dan Daniel Lidström tentang keperluan pemusnah maya untuk pelaksanaan shared_ptr, ia sememangnya mungkin untuk mereka bentuk shared_ptr yang tidak memerlukan sedemikian pemusnah.
Pelaksanaan Teknikal
Kunci kepada pelaksanaan ini terletak pada jenis pemadaman. Shared_ptr menguruskan bukan sahaja kaunter rujukan tetapi juga objek pemadam yang disimpan dalam blok memori yang sama. Jenis pemadam ini berbeza daripada shared_ptr, membenarkan fleksibiliti dalam mengurus objek dengan jenis dinamik yang berbeza.
Pembina templat diperkenalkan:
template<class T> class shared_ptr { public: ... template<class Y> explicit shared_ptr(Y* p); ... };
Apabila membina shared_ptr dengan penunjuk kelas terbitan (cth., shared_ptr
C 11 Keperluan Standard
Piawaian C 11 secara jelas mentakrifkan keperluan untuk ini pembina:
Untuk pemusnah:
Oleh itu, pelaksanaan shared_ptr menggunakan memadam taip dan mengurus pemadam dengan teliti untuk melupuskan objek dengan jenis dinamik yang berbeza dengan berkesan, walaupun tanpa memerlukan pemusnah maya dalam kelas polimorfik.
Atas ialah kandungan terperinci Bolehkah shared_ptr Berfungsi Tanpa Pemusnah Maya Kelas Polimorfik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!