zoukankan      html  css  js  c++  java
  • 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 ;
    }
  • 相关阅读:
    Spring容器启动前传——web应用
    三方依赖bean初始化导致项目启动失败问题
    一个静态内部类单例引发的思考
    依赖传递
    kafka
    设置旋转元素的基点位置
    keep-alive 的 Props && 钩子函数
    css处理文字: 单行居中 多行居左
    localStorage 存 取 删
    for循环中暂停,async await
  • 原文地址:https://www.cnblogs.com/long5683/p/11402194.html
Copyright © 2011-2022 走看看