zoukankan      html  css  js  c++  java
  • 【c++】多重继承与虚继承

    派生类的构造函数初始化列表将实参分别传递给每个直接基类,其中基类的构造顺序与派生列表中基类的出现顺序保持一致,而与派生类构造函数初始化列表中基类的顺序无关

    类型转换与多个基类

    编译器不会在派生类向基类的几种转换中进行比较和选择,因为在它看来转换到任意一种基类都一样好,所以要避免二义性。

    void print(const Bear&);

    void print(const Endangered&);

    Panda yangyang("yangyang");

    print(yangyang);//二义性错误,不知道就panda对象转为哪一个基类

    多重继承下的类作用域

    当一个类拥有多个基类时,有可能出现派生类从两个或更多基类中继承了同名成员的情况,此时,不加前缀限定符直接使用该名字将引发二义性。

     虚继承

    虚继承的目的是令某个类做出声明,承诺愿意共享它的基类。共享的基类对象成为虚基类,在这种机制下,不论虚基类在继承体系中出现了多少次,在派生类中都只包含唯一一个共享的虚基类子对象。

    含有虚继承的对象的构造顺序与一般的顺序稍有区别:首先使用提供给最底层派生类构造函数的初始值初始化该对象的虚基类子部分,接下来按照直接基类在派生列表中出现的次序依次初始化。

  • 相关阅读:
    关于MySql中的varchar类型
    分享15个HTML5工具
    MVC的路径查找顺序
    html5画布的旋转效果
    C#将集合快速排序
    一个不错的php验证码的类
    新学C++的for,switch和随机数
    高效率去掉js数组中重复项
    js带上框架和防止被iframe的代码
    请不要对我说“你要马上把这个小问题修改好”
  • 原文地址:https://www.cnblogs.com/ljygoodgoodstudydaydayup/p/3844851.html
Copyright © 2011-2022 走看看