C++——虚继承(不要使用,会导致二义性)

 如果一个派生类从多个基类派生,而这些基类又有一个共同的基类,则在对该基类中声明的名字进行访问时,可能产生二义性

总结:

  •   如果一个派生类从多个基类派生,而这些基类又有一个共同

     的基类,则在对该基类中声明的名字进行访问时,可能产生

     二义性

  •   如果在多条继承路径上有一个公共的基类,那么在继承路径的某处

     汇合点,这个公共基类就会在派生类的对象中产生多个基类子对象

  •   要使这个公共基类在派生类中只产生一个子对象,必须对这个基类

     声明为虚继承,使这个基类成为虚基类。

  •   虚继承声明使用关键字          virtual
#include <iostream>
using namespace std;

class B
{
public:
    int b;
protected:
private:

};

class B1 : virtual public B
{
public:
    int b1;

};

class B2 : virtual  public B
{
public:
    int b2;
};

class C : public B1, public B2
{
public:
    int c;
};

void main()
{

    C  c1;
    c1.b1 = 100;
    c1.b2 = 200;
    c1.c = 300;

    c1.b = 500; //继承的二义性 和 虚继承解决方案
    //c1.B1::b = 500;
    //c1.B2::b = 500;

    
    cout<<"hello..."<<endl;
    system("pause");
    return ;
}
原文地址:https://www.cnblogs.com/long5683/p/11402194.html