版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jlran/article/details/52700125
#include <iostream>
using namespace std;
//虚继承的意义
//在多继承中,保存共同基类的多份同名成员,虽然有时是必要的,可以在不同的数
//据成员中分别存放不同的数据,但在大多数情况下,是我们不希望出现的。因为保留多
//份数据成员的拷贝,不仅占有较多的存储空间,还增加了访问的困难。
//为此,c++提供了,虚基类和虚继承机制,实现了在多继承中只保留一份共同成员。
//虚基类,需要设计和抽象,虚继承,是一种继承的扩展
//解决多重多级继承造成的二义性
class A
{
public:
int i;
void print(){
cout<<"i="<<i<<endl;
}
};
class B:virtual public A //此处采用虚继承
{
};
class C:virtual public A
{
};
class D:public B,public C
{
};
int main()
{
A a;
B b;
C c;
a.i=1;
a.print();
b.i=2;
b.print();
c.i=3;
c.print();
D d;
d.i=4;
d.print();
getchar();
return 0;
}