构造 / 析构顺序
构造:先基类后派生类 · 析构:先派生类后基类(逆序)
继承链 Animal ← Dog ← Puppy (派生对象 = 基类子对象 + 派生新增成员)
构造 (constructor)
自顶向下 基类 → 派生类
Animal()
基类子对象
①
Dog()
中间派生
②
Puppy()
最派生类
③
先把“地基”造好,再造上层
析构 (destructor)
自底向上 派生类 → 基类(逆序)
~Animal()
基类子对象
③
~Dog()
中间派生
②
~Puppy()
最派生类
①
后构造的先析构,像出栈
构造 基→派 · 析构 派→基(严格逆序)
▶ 重播