全局对象的析构函数为什么不被执行
这是深入浅出mfc里的一个例子
#include<iostream>#include<string>using namespace std;class CDemo{public: CDemo(const char* str); ~CDemo();private: char name[20];};CDemo::CDemo(const char* str){ strncpy(name,str,20); cout<<"Constructor called for "<<name<<'\n';}CDemo::~CDemo(){ cout<<"Destructor called for "<<name<<'\n';}void func(){ CDemo LocalObjectInFunc("LocalObjectInFunc");//函数里的局部对象最先被析构 static CDemo StaticObject("StaticObject");//这是最后被析构的 CDemo* pHeapObjectInfunc=new CDemo("pHeapObjectInfunc"); cout<<"Inside func"<<endl;}CDemo GlobalObject("GlobalObject");//1//最先调用构造函数的居然是你,全局对象int main(){ CDemo LocalObjectInMain("LocalObjectInMain");//2 //这也是第二个被析构的 CDemo* pHeapObjectInMain=new CDemo("pHeapObjectInMain");//3 cout<<"In main,before calling func\n"; func(); cout<<"In main,after calling func\n"; return 0;}