Virtual Table
多重继承下的多态实现
base2 *b2 = new derive();
b2->f2();安全性问题
Base1 *b1 = new Derive(); b1->f1(); //编译出错
Reference
Last updated
base2 *b2 = new derive();
b2->f2(); Base1 *b1 = new Derive();
b1->f1(); //编译出错Last updated
class Base {
private:
virtual void f() { cout << "Base::f" << endl; }
};
class Derive : public Base{};
typedef void(*Fun)(void);
void main() {
Derive d;
Fun pFun = (Fun)*((int*)*(int*)(&d)+0);
pFun();
}