main函数是整个C++程序的入口函数,如果程序想要在main函数之前/之后运行,则必须借助全局对象的构造和析构函数。
#include <iostream>
class A{
public:
A(){std::cout << "A" << std::endl;}
~A(){std::cout << "~A" << std::endl;}
};
A a_global = A();
int main(){
std::cout << "main-start" << std::endl;
A a_local = A();
std::cout << "main-end" << std::endl;
return 0;
}
函数的输出如下:
A //a_global构造函数
main-start //---------------------------main()开始
A //a_local构造函数
main-end
~A //a_local析构函数,-----------main()结束
~A //a_global析构函数
在一个函数执行执行,其所需的对象变量已经初始化完毕。因此全局对象的初始化会在main之前。同理,全局对象的析构会在main之后。