代码如下:
#include <iostream> class Global_Val{ public: Global_Val(); ~Global_Val(); }; Global_Val::Global_Val() { std::cout << "Initialize" << '\n'; } Global_Val::~Global_Val() { std::cout << "Clean up" << '\n'; } Global_Val a; int _tmain(int argc, _TCHAR* argv[]) { std::cout << "Hello, world!\n"; return 0; }
理论基础:
在所有函数之外定义的变量(即全局变量、名字空间的变量,以及个各类的static变量;)在main函数被激活之前完成初始化(构造),对于已经构造器的所有这些变量,其析构函数将在退出main()之后调用。动态连接机制使这里的情况稍微复杂了一点,这种情况下的初始化将延迟至代码连接到程序之上的时候进行。