C++析构语意学
析构语意学
如果class没有定义destructor,那么只有在class内含的member object(抑或class自己的base class)拥有destructor的情况下,编译器才会自动合成出一个来
一个destructor被扩展的方式类似constructor被扩展的方式,但是顺序相反:
destructor的函数本体首先被执行
如果class拥有member class object,而后者拥有destructors,那么它们会以其声明顺序的相反顺序被调用
如果object内含一个vptr,现在被重新设定,指向适当base class的virtual table
如果有任何直接的(上一层)nonvirtual base classes拥有destructors,那么它们会以其声明顺序的相反顺序被调用
##如果有任何virtual base classes拥有destructor,而目前讨论的这个class是最尾端的class,那么它们会以其原来的构造顺序的相反顺序被调用
总结
就像constructor一样,目前对于destructor的一种最佳实现策略就是