全局对象的析构函数为什么不被执行
这是深入浅出mfc里的一个例子
- C/C++ code
#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;}
书上的执行结果和我电脑上的有点不一样,它的最后一个析构的是GlobalObject。而我的没有,这是为什么呢?
[解决办法]
析构函数 上设断点.