กลไกเสมือนจะทำงานก็ต่อเมื่อเรามีตัวชี้คลาสฐานไปยังออบเจกต์คลาสที่ได้รับ
ใน C++ คอนสตรัคเตอร์ไม่สามารถเป็นแบบเสมือนได้ เนื่องจากเมื่อคอนสตรัคเตอร์ของคลาสถูกเรียกใช้งาน ไม่มีตารางเสมือนในหน่วยความจำ หมายความว่ายังไม่มีการกำหนดตัวชี้เสมือน ดังนั้น คอนสตรัคเตอร์จึงไม่ควรเป็นแบบเสมือนเสมอ
แต่ตัวทำลายเสมือนนั้นเป็นไปได้ นี่คือตัวอย่าง
ตัวอย่าง
#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