代码如下:
#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()之后调用。动态连接机制使这里的情况稍微复杂了一点,这种情况下的初始化将延迟至代码连接到程序之上的时候进行。