Rumah > pembangunan bahagian belakang > C++ > Perlukah Pemusnah Maya Tulen dalam C Ditakrifkan?

Perlukah Pemusnah Maya Tulen dalam C Ditakrifkan?

Linda Hamilton
Lepaskan: 2024-12-16 17:46:10
asal
195 orang telah melayarinya

Should Pure Virtual Destructors in C   Be Defined?

Mentakrifkan Pemusnah Maya Tulen dalam C : Membongkar Perangkap

Konsep pemusnah maya tulen dalam C menimbulkan persoalan penting mengenai pelaksanaan yang betul untuk kelas asas abstrak. Pertimbangkan coretan kod berikut:

class A {
public:
    virtual ~A() = 0;
};
Salin selepas log masuk

Timbul persoalan sama ada pendekatan ini sesuai untuk mentakrifkan kelas asas abstrak. Walaupun ia berjaya menyusun dalam MSVC, wujud kebimbangan bahawa ia mungkin mengakibatkan ranap masa jalan.

Menyingkap Masalah

Isu ini berpunca daripada kekurangan pelaksanaan untuk maya tulen pemusnah. Apabila kelas terbitan dicipta daripada A, pemusnah mereka akhirnya akan menggunakan pemusnah A. Walau bagaimanapun, memandangkan pemusnah A adalah tulen, panggilan akan menghasilkan tingkah laku yang tidak ditentukan.

Menyelesaikan Perangkap

Untuk mengelakkan ranap masa jalan ini, adalah penting untuk melaksanakan pemusnah dalam kelas asas itu sendiri. Pelaksanaan sebaris yang mudah, seperti yang ditunjukkan di bawah, sudah memadai:

class A {
public:
    virtual ~A() = 0;
};

inline A::~A() { }
Salin selepas log masuk

Pelaksanaan ini memastikan bahawa apabila mana-mana kelas terbitan dipadamkan atau dimusnahkan, pemusnah A akan dipanggil dan program akan berfungsi seperti yang diharapkan.

Atas ialah kandungan terperinci Perlukah Pemusnah Maya Tulen dalam C Ditakrifkan?. 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