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

Posted thefist11

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ Primer 5th笔记(chap 18 大型程序工具) 多重继承与虚继承相关的知识,希望对你有一定的参考价值。

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 大型程序工具) 多重继承与虚继承的主要内容,如果未能解决你的问题,请参考以下文章

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

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

C++ Primer 5th笔记(chap 18 大型程序工具)捕获异常

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

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

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