以下内容来自自己实验,希望各位大哥指点。当然要想获得权威的解释,看《Inside C++ Object Model》
让我们从最简单的开始。以下测试代码。
代码
class Base
{
public:
Base()
{
printf("Base construct!\n");
}
//virtual void Test()=0;
virtual void f()
{
printf("Base\n");
}
virtual void f2()
{
printf("Base2\n");
}
virtual void f3()
{
printf("Base3\n");
}
void f4()
{
printf("Base4\n");
}
};
class Derived: public Base
{
public:
Derived()
{
printf("Derived construct!\n");
}
virtual void f()
{
printf("Derived\n");
}
virtual void f2()
{
printf("Derived2\n");
}
virtual void f3()
{
printf("Derived3\n");
}
void f4()
{
printf("Derived4\n");
}
/*virtual void Test()
{
printf("test\n");
}*/
};
int main()
{
Base *p=new Base;
p->f();
p->f2();
p->f3();
p->f4();
/*Base *p = new Derived;*/
p = new Derived;
p->f();
p->f2();
p->f3();
p->f4();
//p->Test();
delete p;
return 0;
}