类的虚继承

来源:互联网 发布:高新区行知小学好不好 编辑:程序博客网 时间:2024/05/22 16:52
两个类继承于同一个基类,并共享基类的数据,即内存。代码如下:
#include <iostream>using namespace std;//---------------------------------------------------------------------------class Atest{   //基类    public:    int i;};class Btest :virtual public Atest//继承时使用了virtual关键字{    //继承类     public:     void set(int value)     {         i = value;     }     void show()     {         cout << i <<endl;     }};class Ctest :virtual public Atest{   //继承类    public:    void set(int value)    {         i = value;    }    void show()    {         cout << i << endl;    }};class Dtest: public Btest,public Ctest{   //同时继承了两个中间类};int main(int argc, char* argv[]){     Dtest d;     d.i = 20;     d.Btest::set(1290);//改写数据i     d.Ctest::show();   //读出数据i     system("pause");          return 0;}//---------------------------------------------------------------------------
这个一个棱形类的继承结构,如果去掉virtual关键字,会出现二义性,编译出错。采用虚基类后,中间任何一个子类改写基类数据i,另一个类型都能读出同样的数据。

阅读全文
0 0