<< 8/25 >>
First Last

仮想関数

解決: 仮想関数テーブルをコンパイラが作る

 struct C {
     // void*** __vtbl; // = { &C::func };
     virtual void func() { puts("C"); }
 };
 
 struct D : public C {
     // void*** __vtbl; // = { &D::func };
     virtual void func() { puts("D"); }
 };
 
 int main() {
     C* c = new D();
     // __vtbl[0](c);
     c->func();  // D::func
 }