ไม่มีผลร้ายในการอนุญาตให้ใช้ตัวทำลายเสมือนบริสุทธิ์ในโปรแกรม C++ จะต้องจัดเตรียมตัวฟังก์ชันสำหรับ destructor เสมือนแท้ ๆ เนื่องจาก destructor ของคลาสที่ได้รับจะถูกเรียกก่อน destructor คลาสพื้นฐาน ดังนั้นหากเราไม่ได้จัดเตรียมฟังก์ชัน body จะพบว่าไม่มีสิ่งใดถูกเรียกระหว่างการทำลายวัตถุและข้อผิดพลาดจะเกิดขึ้น . เราสามารถสร้างคลาสนามธรรมได้อย่างง่ายดายด้วยการสร้างตัวทำลายเสมือนบริสุทธิ์พร้อมคำจำกัดความ
โค้ดตัวอย่าง
#include <iostream>
using namespace std;
class B {
public: virtual ~B()=0; // Pure virtual destructor
};
B::~B() {
cout << "Pure virtual destructor is called";
}
class D : public B {
public: ~D() {
cout << "~Derived\n";
}
};
int main() {
B *b = new D();
delete b;
return 0;
} ผลลัพธ์
~Derived Pure virtual destructor is called