【正确答案】
【答案解析】不是。对于C++程序而言,静态变量、全局变量、全局对象的分配早在main()函数之前就已经完成了。所以并不是所有的动作都是由main()引起的,只有编译器是由main()开始执行的,main()只不过是一个约定的函数入口,在main()函数中的显示代码执行之前,会调用一个由编译器生成的_main()函数,而_main()函数会进行所有全局对象的构造及初始化工作。
以如下程序示例代码为例:
class A{};
A a;
int main()
{
...
}
程序在执行时,首先初始化全局变量,当这个变量是一个对象时,则会调用该对象的构造函数,所以上例中,a的构造函数先执行,然后再执行main()函数。C++中并非所有的动作都是main()引起的。
怎样在main()函数退出之后再执行一段代码?答案依然是全局对象,当程序退出时,全局变量必须销毁,自然会调用全局对象的析构函数,所以剩下的就同构造函数一样了。