一个类到底要不要声明虚构函数,析构的顺序?

如果类的成员和基类都没有析构函数,那么编译器就不会自动合成析构函数。

以上的都不会产生析构函数。但是作为程序员,我们是需要为第4个例子,人为的生成一个构造函数,释放申请的资源。
在父类子类都存在析构函数时,先效用子类的析构函数,后调用父类的析构函数。这和初始化时构造函数的顺序相反。如下图:

析构函数的合成:

因为类Z的成员X,Y具有析构函数,所以,类z的析构函数也会在用户代码之后添加合成的虚构函数。
即使我们显示的声明了Z的析构函数, 编译器也会对它进行扩充;
编译器在处理空类的时候,会分配一个字节的内存。(类之前的type_info去哪里了?
为了保证数据完整性,析构的顺序和类数据成员的声明顺序相反。
评论区