继续整理第六章的内容,关于执行期的一些内容。
这一部分是关于对象的构造和析构的。注:以下部分图片来自于原文
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明确定义了默认构造函数,那么构造函数必须轮流施行于每一个元素上。