C++里面是不是所有的动作都是main()函数引起的(面试宝典笔记)

不是

对于C++程序而言,第一:静态变量、全局变量、全局对象的分配早在main()函数之前已经完成了,第二:系统会为某个启动的程序分配地址空间,创建进程和主线程,并为main()指供参数(如果有的话),然后才转到main()执行,第三:是C/C++的运行时启动函数:wWinMainCRTStartup 引起的,main函数也接受这个函数的调用!。所以并不是所有的动作都是由main()引起的,只是编译器是由main()开始执行的,main()只不过是一个约定的函数入口,在main()函数中的显示代码执行之前,会调用一个由编译器是生成的_main()函数,而_main()函数会进行所有全局对象的构造及初始化工作。如:

class A();

A a;

int main(){

...

}

程序在执行时,因为会首先初始化全局变量,当这个变量是一个对象时,则会首先调用该对象的构造函数,所以上例中,a的构造函数先执行,然后再执行main()函数,C++中并非所有的动作都是main()函数引起的

引申:怎样在main()函数退出以后再执行一段代码?

全局变量。当程序退出时,全局变量必须销毁,自然会调用全局对象的析构函数,所以剩下的就同构造函数一样了
 

猜你喜欢

转载自blog.csdn.net/qq_33263769/article/details/88316158