Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

เดสตรัคเตอร์เสมือน (Virtual Destructor) ใน C++


การลบออบเจ็กต์ของคลาสลูก (derived class) โดยใช้พอยน์เตอร์ที่ชี้ไปยังคลาสฐาน (base class) คลาสฐานควรถูกกำหนดกับเดสตรัคเตอร์เสมือน (virtual destructor)

ตัวอย่างโค้ด

#include<iostream> using namespace std; class b {   public:     b() {       cout<<"Constructing base \n";     }     virtual ~b() {       cout<<"Destructing base \n";     } }; class d: public b {   public:     d() {       cout<<"Constructing derived \n";     }     ~d() {       cout<<"Destructing derived \n";     } }; int main(void) {   d *derived = new d();   b *bptr = derived;   delete bptr;   return 0; }

ผลลัพธ์

Constructing base Constructing derived Destructing derived Destructing base