C++多继承中二义性问题--虚基类

原创 2005年04月27日 15:58:00

#include <iostream>
class Base
{
      public:
             Base()
             {
                   std::cout<<"Base Constructor"<<std::endl;
             }
             ~Base()
             {
                    std::cout<<"Base Deconstructor"<<std::endl;
             }
             void SetBase_Varible(int i)
             {
                  Base_Varible=i;
             }
             int GetBase_Varible()
             {
                  return Base_Varible;
             }
      private:
              int Base_Varible;
};
class DerivedOne:virtual public Base
{
      public:
             DerivedOne()
             {
                      std::cout<<"DerivedOne Constructor"<<std::endl;
                      SetBase_Varible(1);
             }
             ~DerivedOne()
             {
                      std::cout<<"DerivedOne Deconstructor"<<std::endl;
             }
};
class DerivedTwo:virtual public Base
{
      public:
             DerivedTwo()
             {
                      std::cout<<"DerivedTwo Constructor"<<std::endl;
                      SetBase_Varible(2);
             }
             ~DerivedTwo()
             {
                      std::cout<<"DerivedTwo Deconstructor"<<std::endl;
             }
};
class DerivedThree:public DerivedOne,DerivedTwo
{
      public:
             DerivedThree()
             {
                      std::cout<<"DerivedThree Constructor"<<std::endl;
                      std::cout<<GetBase_Varible()<<std::endl;
             }
             ~DerivedThree()
             {
                      std::cout<<"DerivedThree Deconstructor"<<std::endl;
             }
};
int main()
{
    DerivedThree *x=new DerivedThree();
    delete x;
    std::system("PAUSE");
    return 0;
}

C++虚基类解决二义性问题及执行结果分析

由于C++中允许多继承,所以会出现二义性问题:在多个派生类中,定义了相同名字的方法,这时再在main函数里面通过基类调用该方法时,编译器就犯难了。因为它不知道你到底是想用哪一个派生类里面的方法。 ...
  • liu765023051
  • liu765023051
  • 2013年03月15日 18:55
  • 3538

c++多继承与虚基类

转载自:http://blog.csdn.net/insistgogo/article/details/6653301 多继承的定义:派生类的基类大于一个 语法: [...
  • liguohanhaha
  • liguohanhaha
  • 2016年04月11日 20:26
  • 543

C++:多继承中的二义性问题

在派生类中对基类成员的访问应该是唯一的.但是,在多继承情况下,可能造成对基类中某个成员的访问出现了不一致的 情况,这时就称对基类成员的访问产生了二义性. 原因之一:    派生类在访问基类成员函数...
  • lhc2207221755
  • lhc2207221755
  • 2014年02月28日 20:30
  • 2694

C++中多重继承的二义性及解决办法

转载自:http://www.cnblogs.com/lintong/archive/2012/07/28/2613002.html 1. 什么是多重继承的二义性 ...
  • liguohanhaha
  • liguohanhaha
  • 2016年04月27日 10:31
  • 1522

<C++略识>之多重继承、多继承、虚继承

问题:什么是多重继承? 定义三个类:人、士兵、步兵,则有:步兵士兵人,这样的关系称之为多重继承,写法如下:class Person { }; classSoldier:publicPerson ...
  • u013003827
  • u013003827
  • 2016年07月22日 22:29
  • 3389

c++继承之虚基类

虚基类的概念:        若在多继承派生类中继承的基类再拥有一个公共基类,则这个公共基类会在多继承派生类的对象中产生多个公共基类子对象,如果要使这个公共基类再多继承派生类中只产生一个基类子对象,则...
  • erlian1992
  • erlian1992
  • 2015年03月11日 20:56
  • 1194

虚基类解决二义性(转)

  在《多继承》中讲过的例子中,由类A,类B1和类B2以及类C组成了类继承的层次结构。在该结构中,类C的对象将包含两个类A的子对象。由于类A是派生类C两条继承路径上的一个公共基类,那么这个公共基类将在...
  • rachel_cy
  • rachel_cy
  • 2006年09月15日 09:40
  • 1110

虚基类不会产生两义性

#include using namespace std; class human {     public:     void stand(){cout }; class father...
  • Arivn_emb
  • Arivn_emb
  • 2013年11月21日 16:18
  • 395

C++虚基类和多继承

1、首先虚基类解决的是什么问题? 如果一个子类继承的父类不止一个的时候,比如一个子类会继承两个父类。如 class A { private: int x; } class B { p...
  • weixin_37871174
  • weixin_37871174
  • 2017年09月24日 15:33
  • 59

C++ 多继承与虚基类

转载来自:CSDN insistGoGo  (http://blog.csdn.net/insistgogo) 多继承的定义:派生类的基类大于一个 语法: [cpp] view p...
  • txl16211
  • txl16211
  • 2015年03月30日 22:49
  • 598
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++多继承中二义性问题--虚基类
举报原因:
原因补充:

(最多只允许输入30个字)