[C++]虛基類,解決多繼承造成的二義性

#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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章