首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

大局对象的析构函数为什么不被执行

2012-09-03 
全局对象的析构函数为什么不被执行这是深入浅出mfc里的一个例子C/C++ code#includeiostream#includestr

全局对象的析构函数为什么不被执行
这是深入浅出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。而我的没有,这是为什么呢?

[解决办法]
析构函数 上设断点.

热点排行