กลไกเสมือน (virtual mechanism) ทำงานได้เฉพาะเมื่อเรามีพอยน์เตอร์คลาสฐานชี้ไปที่วัตถุคลาสลูก
ใน C++ Constructor ไม่สามารถเป็น virtual ได้ เพราะเมื่อ constructor ของคลาสถูก.execute ไม่มี virtual table ในหน่วยความจำ หมายถึงยังไม่มี virtual pointer ถูกกำหนด ดังนั้น constructor ควรเป็น non-virtual เสมอ
แต่ Destructor แบบ virtual เป็นไปได้ นี่คือตัวอย่าง
ตัวอย่าง
#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