[CC++]main函数执行前后还会发生什么

    xiaoxiao2022-07-12  178

    问题描述:在C\C++语言中是不是所有的动作都是由main引起的,来看下面的代码:

    #include<iostream> class A { public: A(){ printf("A construct function "); } ~A(){ printf("A destruct function "); } }; A a; int main() { printf("main function starting."); return 0; }

    输出结果是什么呢?是不是“main function starting.”呢?

    结果与分析 首先main()函数只不过是提供了一个函数入口,在main()函数中的显示代码执行之前,会由编译器生成_main函数,其中会进行所有全局对象的构造以及初始化工作。简单来说静态变量、全局变量和全局对象来说的分配是早在main()函数之前完成的,所以C\C++中并非所有的动作都是由main()函数引起的。

    同理在main()函数执行后,程序退出,这时候会对全局变量和全局对象进行销毁操作,所以在main()函数还会执行相应的代码。在上面的例子中,a的构造函数会先执行,在执行main,最后会调用a的析构函数。

    最新回复(0)