昨天和同学对c++虚继承这部分 产生了一些争论,发觉自己对技术越来越浮躁了。不得不痛下决心。一看c++虚继承的内部实现(很浅很浅的看看)。

        以下内容来自自己实验,希望各位大哥指点。当然要想获得权威的解释,看《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;
}

相关文章: