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