06 - 普通继承及其实现原理
C++面向对象的三大特性:封装,继承和多态。本文主要讲了C++普通继承和实现原理。
介绍
如果要基于某个类去编写另一个类,或者对某个类进行少量修改,用继承即可。
例如,在游戏中有个叫做Spare
的“基”道具,把他写成一个类,然后用两个子类去写出实际上用到的道具:
class Spare
{
private:
std::string name;
std::string desc;
};
// 通过继承的方式编写一个类
class FireSpare : public Spare
{
// ...
};
class IceSpare : public Spare
{
// ...
};
原理
类的构造
在创建一个类对象时,C++定义了如下创建顺序:
- 如果该类有父类,则先执行父类的默认构造函数。
- 类的非静态数据成员按章声明的顺序创建。
- 执行该类的构造函数。
可以递归地使用这些规则。
类的析构
由于析构函数没有参数,可以始终自动调用父类的析构函数,顺序与构造函数相反:
- 调用该类的析构函数。
- 销毁该类的数据成员,销毁顺序与创建的顺序相反。
- 如果有父类,调用父类的析构函数。
也可递归使用这些规则。
参考资料
- 飘零的落花 - 现代C++详解
- C++20高级编程