class A
{
public:
virtual ~A(){cout<<"~A"<<endl;}
void funA(){cout<<"funA"<<endl;}
};
class B:virtual public A
{
public:
~B(){cout<<"~B"<<endl;}
void funB(){cout<<"funB"<<endl;}
};
class C:virtual public A
{
public:
~C(){cout<<"~C"<<endl;}
void funC(){cout<<"funC"<<endl;}
};
class D:public B, public C
{
public:
~D(){cout<<"~D"<<endl;}
void funD(){cout<<"This is D"<<endl;}
};
void main()
{
D *pd = new D;
//当指针pd调用funA()时会出现歧义,系统不知道调用的是B的funA()还是C的funA(),使用虚继承可以解决这类问题
pd->funA();
delete pd;
}
虚继承
最新推荐文章于 2025-07-19 18:37:45 发布