06 - 普通继承及其实现原理

C++ 面向对象的三大特性:封装,继承和多态。本文主要讲了 C++ 普通继承和实现原理。

介绍

如果要基于某个类去编写另一个类,或者对某个类进行少量修改,用继承即可。

例如,在游戏中有个叫做 Spare 的 “基” 道具,把他写成一个类,然后用两个子类去写出实际上用到的道具:

   
class Spare { private: std::string name; std::string desc; }; // 通过继承的方式编写一个类 class FireSpare : public Spare { // ... }; class IceSpare : public Spare { // ... };

原理

类的构造

在创建一个类对象时,C++ 定义了如下创建顺序:

  1. 如果该类有父类,则先执行父类的默认构造函数。
  2. 类的非静态数据成员按章声明的顺序创建。
  3. 执行该类的构造函数。

可以递归地使用这些规则。

类的析构

由于析构函数没有参数,可以始终自动调用父类的析构函数,顺序与构造函数相反:

  1. 调用该类的析构函数。
  2. 销毁该类的数据成员,销毁顺序与创建的顺序相反。
  3. 如果有父类,调用父类的析构函数。

也可递归使用这些规则。

参考资料