ไม่มีผลร้ายในการอนุญาตให้ใช้ตัวทำลายเสมือนบริสุทธิ์ในโปรแกรม 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