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

lida2003 2011-12-15 03:21:06
如题:程序里面全局变量的构造函数和析构函数什么时候调用啊?

声明一个类,然后定义全局变量,这个类得构造和析构是什么时候被调用啊?最好能有个demo程序验证一下。求高人指点,谢谢
...全文
678 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lida2003 2011-12-15
  • 打赏
  • 举报
回复
多谢
logicouter 2011-12-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zhujian888 的回复:]

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

这就是整个过程
[/Quote]
正解!
gyzx090223 2011-12-15
  • 打赏
  • 举报
回复
全局变量存储在全局区,在程序结束的时候释放内存,所以在程序结束时候调用析构函数。全局变量也是一段代码,所以程序会从上往下执行,应该是在执行的时候调用构造函数。
周晓荣 2011-12-15
  • 打赏
  • 举报
回复

#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
*/
SophiaNM 2011-12-15
  • 打赏
  • 举报
回复
自己写个程序,设好断点,调试一次就全知道了。 比在这里问快多了
zhujian888 2011-12-15
  • 打赏
  • 举报
回复
操作系统加载程序-》mainCRTStartup(这个时候初始化全局对象,调用构造) -> main 或winmain -> 返回 mainCRTStartup(返回后,crt调用exit,exit函数里寻找析构函数,然后调用) ->ExitProcess

这就是整个过程

64,631

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧