C++ Super-FAQ 『Deconstructor』
- 析构顺序
与构造顺序相反:先构造、先析构。
- 是否能重载析构函数?
不能。
因为析构函数名称相同且没有参数。
- 是否能显示调用析构函数?
一般不行。
因为在代码运行至块结束,即}位置处,会自动调用该代码块内部局部对象的析构函数,若已经显示调用会导致重复析构问题。
特殊情况是使用placement new在指定位置构造对象,在销毁时必须显示调用析构函数,否则会导致内存泄露。
备注:若需要在代码块内部提前销毁某局部变量,用{}将指定代码包裹即可。