[读书笔记] 深入探索C++对象模型-第六章-执行期语义学(上)

本文深入探讨C++中对象的构造和析构过程,包括全局对象、局部静态对象及对象数组的初始化方式与析构时机。适用于希望深入了解C++运行时行为的开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

继续整理第六章的内容,关于执行期的一些内容。

这一部分是关于对象的构造和析构的。注:以下部分图片来自于原文

1. 全局对象

C++中全局对象会被放到数据段中,一种可能的全局对象的初始化方法是在程序中最前面(main()函数第一个指令)插入函数__main(),其中生成对所有全局对象的初始化操作,如下图:


2. 局部静态对象

考虑一下函数:

void Point& identity() 
{
    staitc Point sta_Point;
    return sta_Point;
}
不管该函数被调用多少次,静态局部对象sta_Point只会被初始化一次,理所当然也只会被析构一次,这种通过函数返回局部静态对象的方法通常是用来解决跨模块(文件)的全局变量的初始化顺序问题。

3. 对象数组

对于如下数组定义:

Point manyPoints[10];
如果 Point未定义默认构造函数或者析构函数,那么产生该数组不会比产生内建类型的数组做的更多,只需要配置足够的内存以存储10个连续的Point元素。

如果Point明确定义了默认构造函数,那么构造函数必须轮流施行于每一个元素上。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值