[C++]虚基类,解决多继承造成的二义性

版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}

猜你喜欢

转载自blog.csdn.net/jlran/article/details/52700125
今日推荐