Scott Meyers ในภาษา C++ ที่มีประสิทธิภาพพูดว่า -
หากคลาสมีฟังก์ชันเสมือน คลาสนั้นควรมีตัวทำลายเสมือน และคลาสนั้นที่ไม่ได้ออกแบบมาให้เป็นคลาสพื้นฐานหรือไม่ได้ออกแบบมาให้ใช้แบบพหุสัณฐานก็ไม่ควรประกาศตัวทำลายเสมือน
ดังนั้นคุณควรประกาศ destructors เสมือนในคลาสฐาน polymorphic นี่เป็นเพราะถ้าคุณสร้างวัตถุของคลาสฐานโดยใช้ตัวสร้างที่ได้รับ -
Base *b = new Derived(); // use b delete b;
หาก destructor ของ Base ไม่เสมือน การลบ b จะมีพฤติกรรมที่ไม่ได้กำหนดไว้ในกรณีนี้ การเรียกไปยังตัวทำลายจะได้รับการแก้ไขเหมือนกับรหัสที่ไม่ใช่เสมือนใดๆ ดังนั้น destructor ของคลาสฐานจะถูกเรียกแต่ไม่ใช่คลาสที่ได้รับ ซึ่งจะทำให้ทรัพยากรรั่วไหล