c++基础语法:虚继承

2020-07-06 05:42:39易采站长站整理


为了解决 上面多继承的问题,所以c++中提出了虚继承的概念,虚继承就是在子类中只保留一份父类的拷贝,拿上面的类子来说,就是“如果有一份父类的拷贝的话就用父类的拷贝,如果没有就加入一份拷贝” :

class animal{
        public :
              void op()
                  {cout << “hello animal” ;}
 };
class tiger : public virtual animal {
        public :
              void tg()
                  {cout << “this is  tiger” ;}
};
class lion : public virtual animal {
        public :
              void lo()
                  {cout << “this is lion” ;}
};
class liger : public tiger, public lion {
        public :
              void lo()
                  {cout << “this is lion” ;}
};
int main()
{
     class liger  oneliger ;
     liger.op() ; 
}

此时liger对象在内存中的布局就变成了:
4、animal的成员变量


3、继承tiger的成员变量
      //包括 op()


2、继承lion的成员变量
     //已经包含一份拷贝,所以 已经不包括op()


1、liger本身的成员变量


这样内存中就只有一份animal对象的拷贝,所以就不会存在模糊的问题;

您可能感兴趣的文章:C++中的菱形继承深入分析C++多重继承与虚继承分析关于C++中菱形继承和虚继承的问题总结

相关文章 大家在看