侧边栏壁纸
博主头像
赵东阳的个人网站

行动起来,活在当下

  • 累计撰写 20 篇文章
  • 累计创建 8 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录
C++

析构函数语义学

温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

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

image-20220314123317478

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

image-20220314164642952

以上的都不会产生析构函数。但是作为程序员,我们是需要为第4个例子,人为的生成一个构造函数,释放申请的资源。

在父类子类都存在析构函数时,先效用子类的析构函数,后调用父类的析构函数。这和初始化时构造函数的顺序相反。如下图:

image-20220315123326624

析构函数的合成

image-20220315123553325

因为类Z的成员X,Y具有析构函数,所以,类z的析构函数也会在用户代码之后添加合成的虚构函数。

即使我们显示的声明了Z的析构函数, 编译器也会对它进行扩充;

编译器在处理空类的时候,会分配一个字节的内存。(类之前的type_info去哪里了?

为了保证数据完整性,析构的顺序和类数据成员的声明顺序相反。

0

评论区