cpp中,全局变量,为什么不会自动调用析构函数?

[复制链接]
查看11 | 回复3 | 2009-6-14 22:31:51 | 显示全部楼层 |阅读模式
正在看一书,按理说,全局的变量,可以自动调用它的构造函数,那也应该可以自动调析构函数才对啊,不知道是不是这样?为什么我在VC6上边试的,不会调析构函数?
#include
using namespace std;
class A
{
public:
A()
{
cout<<"A constructor"<<endl;
}
~A()
{
cout<<"A destructor"<<endl;
}
};
A the;
void main(){}
//out:
A constructor

回复

使用道具 举报

千问 | 2009-6-14 22:31:51 | 显示全部楼层
全局对象的构造函数是在main()函数之前调用的,析构函数是在main函数之后调用的。你的析构函数没打印出来,是因为VC6编译器太老了,但是析构函数却是调用了,你换个别的环境吧,VC对C++标准支持不太好。如果你非要在VC6先看到析构函数调用,将#include using namespace std;这两句换成#include 试试。...
回复

使用道具 举报

千问 | 2009-6-14 22:31:51 | 显示全部楼层
可能有两个原因:一个就是编译器的问题。VC6太老了,很多C++标准都没有实现,现在最新的C++库boost都已经放弃了对VC6的支持。还是换个VC 2005或者2008吧二就是,在程序里调用了ExitProcess()之类的会显示中断进程或者线程的函数,这样就跳过了全局对象的析构过程。...
回复

使用道具 举报

千问 | 2009-6-14 22:31:51 | 显示全部楼层
cout是对象,在A析构前它本身已经析构了,所以看不出来。你改用printf就可以看到了。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行