答案是:no
举个例子说明:
main.cpp有如下代码:
#include <iostream>
C c;
int main()
{
A *pa = new A;
B b;
static D d;
deleta pa;
return 1;
}
说明: A、B、C、D 为四个类,请问这4个类的构造调用的顺序是什么? ??对应的析构调用的顺序又是什么???
答案: 构造调用顺序: C A B D
析构调用顺序: A B D C
由此可见,程序运行后调用的第一个函数不是main函数。实际上,第一个调用的函数是类C的构造函数。
分析:
对于类A, 是建立在堆上的对象指针pa,手动释放;
对于类B,是建立在栈上的对象b,main函数结束时释放;
对于类C,是在静态存储区建立全局对象c,程序结束时释放;
对于类D,也是在静态存储区建立对象d,但是去局部对象,程序结束时释放;
问题来了,对于同一个文件中的全局对象,谁先构造???