+ -
当前位置:首页 → 问答吧 → 程序里面全局变量的构造函数和析构函数什么时候调用啊?

程序里面全局变量的构造函数和析构函数什么时候调用啊?

时间:2011-12-15

来源:互联网

如题:程序里面全局变量的构造函数和析构函数什么时候调用啊?

声明一个类,然后定义全局变量,这个类得构造和析构是什么时候被调用啊?最好能有个demo程序验证一下。求高人指点,谢谢

作者: lida2003   发布时间: 2011-12-15

操作系统加载程序-》mainCRTStartup(这个时候初始化全局对象,调用构造) -> main 或winmain -> 返回 mainCRTStartup(返回后,crt调用exit,exit函数里寻找析构函数,然后调用) ->ExitProcess

这就是整个过程

作者: zhujian888   发布时间: 2011-12-15

自己写个程序,设好断点,调试一次就全知道了。 比在这里问快多了

作者: SophiaNM   发布时间: 2011-12-15

C/C++ code

#include <iostream>
using namespace std;

double a;

class BeforeMain
{
public:
    BeforeMain(int index)
    {
        cout<<"BeforeMain Constructor -->"<<index<<endl;
    }
    ~BeforeMain()
    {
        cout<<"BeforeMain Destructor"<<endl;
    }
};

BeforeMain b(1);

void main()
{
    cout<<"enter main"<<endl;
}
double x[3]={1.1,2.0,3.9};

BeforeMain c(2);

/*result :
BeforeMain Constructor -->1
BeforeMain Constructor -->2
enter main
*/

作者: et214721856   发布时间: 2011-12-15

全局变量存储在全局区,在程序结束的时候释放内存,所以在程序结束时候调用析构函数。全局变量也是一段代码,所以程序会从上往下执行,应该是在执行的时候调用构造函数。

作者: gyzx090223   发布时间: 2011-12-15

引用 1 楼 zhujian888 的回复:

操作系统加载程序-》mainCRTStartup(这个时候初始化全局对象,调用构造) -> main 或winmain -> 返回 mainCRTStartup(返回后,crt调用exit,exit函数里寻找析构函数,然后调用) ->ExitProcess

这就是整个过程

正解!

作者: logicouter   发布时间: 2011-12-15

热门下载

更多