1. 多重继承 (multiple inheritance)

一个类从多个直接基类派生

eg.

class Bear : public ZooAnimal {class Panda : public Bear, public Endangered { /* ... */ };

Panda对象内存

1.1 构造一个派生类的对象将N时构造并初始化它的所有基类子对象。 与从一个基类进行的派生一样, 多重继承的派生类的构造函数初始值也只能初始化它的直接基类

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

eg. ZooAnimal 是整个继承体系的最终基类 , Bear 是 Panda 的直接基类 ,

//显式地初始化所有基类
Panda::Panda (std::string name, bool onExhibit ): Bear (name, onExhibit, "Panda"),Endangered (Endangered::critical) { }// 隐式地使用 Bear 的默认构造函数初始化 Bear 子对象
Panda::Panda ( ): Endangered (Endangered::critical) { }

step1. ZooAnimal 是 Bear 的基类, 所以首先初始化 ZooAnimal
step2. 接下来初始化 Panda 的第一个直接基类 Bear。
step3. 初始化 Panda 的第二个直接基类 Endangered.
step4. 最后初始化 Panda

C++ Primer 5th笔记(chap 18 大型程序工具) 多重继承与虚继承相关推荐

  1. C++ Primer 5th笔记(chap 18 大型程序工具)使用命名空间成员

    1. 3种方法 using 声明 命名空间的别名( namespace alias) using 指示( using directive) 1.1 命名空间的别名 namespace cplusplu ...

  2. C++ Primer 5th笔记(chap 18 大型程序工具) 多重继承之构造函数、析构函数

    1. 继承的构造函数与多重继承 如果从多个基类中继承了相同的构造函数(即形参列表完全相同),则程序将产生错误 struct Basel {Basel () = default;Basel (const ...

  3. C++ Primer 5th笔记(chap 18 大型程序工具) 重载与命名空间

    1. using 声明或 using 指示能将某些函数添加到候选函数集 2. 对于接受类类型实参的函数来说, 其名字查找将在实参类所属的命名空间中进行.在这些命名空间中所有与被调用函数同名的函数都将被 ...

  4. C++ Primer 5th笔记(chap 18 大型程序工具) 类、 命名空间与作用域

    1. 命名空间内部名字的查找规则 由内向外依次查找每个外层作用域. 外层作用域也可能是一个或多个嵌套的命名空间, 直到最外层的全局命名空间查找过程终止. 只有位于开放的块中且在使用点之前声明的名字才被 ...

  5. C++ Primer 5th笔记(chap 18 大型程序工具)未命名的命名空间unnamed namespace

    1. 定义 关键字 namespace 后紧跟花括号括起来的一系列声明语句 1.1 生命周期 未命名的命名空间中定义的变量拥有静态生命周期: 它们在第一次使用前创建, 并且直到程序结束才销毁 未命名的 ...

  6. C++ Primer 5th笔记(chap 18 大型程序工具)内联命名空间 (inline namespace)

    1. inline必须出现在命名空间第一次出现的地方 inline namespace FifthEd {//... }//后续再打开命名空间的时候可以写inline也可以不写 namespace F ...

  7. C++ Primer 5th笔记(chap 18 大型程序工具)命名空间

    1. 问题:命名空间污染 namespace pollution 多个库将名字放置在全局命名空间 1.1 一般人的解决方法 起长名字 eg. class cplusplus_primer_Query ...

  8. C++ Primer 5th笔记(chap 18 大型程序工具)noexcept

    1. 通过提供 noexcept 说明 ( noexcept specification ) 指定某个函数不会抛出异常. 其形式是关键字 noexcept 紧跟在函数的参数列表后面 {// 紧跟在函数 ...

  9. C++ Primer 5th笔记(chap 18 大型程序工具)异常处理

    1. 异常处理 ( exception handling) 允许程序中独立开发的部分能够在运行时就出现的问题进行通信并做出相应的处理. 异常使得我们能够将问题的检测与解决过程分离开来. 程序的一部分负 ...

  10. C++ Primer 5th笔记(chap 18 大型程序工具)构造函数与虚继承

    1. 继承体系中的每个类都可能在某个时刻成为" 最低层的派生类". 只要我们能创建虚基类的派生类对象, 该派生类的构造函数就必须初始化它的虚基类. Bear::Bear (std: ...

最新文章

  1. 天问一号火星探测器已飞离地球800多万公里 多个载荷完成自检
  2. C和指针之二维字符串数组用指针数组、数组指针、二级指针打印
  3. 【翻译】ANDROID KTX – 使用Kotlin进行Android开发
  4. 2015 Autodesk 开发者日( DevDays)和 助力开发周火热报名中
  5. 一张图带你看懂 ,web前端开发应该知道的HTML5六大趋势
  6. bootstrap学习记录
  7. linux软盘镜像下载,Linux系统各发行版镜像下载(持续更新)
  8. libcef-案例展示-将cef浏览器嵌入到mfc中作为子窗口运行
  9. [NOIP2011] 观光公交解题报告
  10. 婚姻:中国女研究生结婚率下降明显 对方学历低看不上
  11. 23种设计模式(15):备忘录模式
  12. i7 11800h参数
  13. C++ 泛型编程(五) 模版重载与特例化
  14. 漏洞payload 靶机_【HTB系列】靶机Bitlab的渗透测试
  15. python或c++编写一个文件传输工具
  16. mysql数据库表空间压缩,表空间中有数据也可以压缩表空间(数据文件)大小!!...
  17. 为什么选择MVVM而不是MVP - Android体系结构
  18. MPAndroidChart蜘蛛网雷达图
  19. Java面试必懂知识点总结
  20. qt调试android程序崩溃,使用qt5开发的Android应用程序合并了AWS C++库崩溃

热门文章

  1. 网络:TCP/IP各层的协议
  2. 1.使用sizeof计算类的大小
  3. 【Scratch】青少年蓝桥杯_每日一题_2.01_画五角星
  4. 计算机网络 公有IP和私有IP介绍
  5. 博科b8网络版定位服务器位置,如何在企业服务器中采集奥维GPS定位设备的位置...
  6. java按钮调用 后台方法_onclick怎么调用后台中的一个方法
  7. android contacts电话查询头像,android怎么取得本地通讯录的头像的原图
  8. java jpopupmenu 无法显示_java – 从JButton显示/隐藏JPopupMenu; FocusListener无法正常工作?...
  9. tushare pro接口_利用tushare获取新闻联播文字稿并制作词云
  10. DL之DNN优化技术:GD、SGD、Momentum、NAG、Ada系列、RMSProp各种代码实现之详细攻略