虫子

seagullbb 2005-03-09 05:49:38
#include<iostream.h>

class m
{
public:
m(){cout<<"1";}
~m(){cout<<"2";}
};
int main()
{
m c;
system("pause");
}
怎么析构函数运行不出来呢?
...全文
116 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuchengliu 2005-03-09
  • 打赏
  • 举报
回复
#include<iostream.h>

class m
{
public:
m(){cout<<"1";}
~m(){cout<<"2";}
};
int main()
{

m *c = new m() ;
delete c;

system("pause");
}
lw1a2 2005-03-09
  • 打赏
  • 举报
回复
析构函数是一个特殊的由用户定义的成员函数,当该类的对象离开了它的域,或者delete
表达式应用到一个该类的对象的指针上时,析构函数会自动被调用。

你的例子中的c处在main()中,当c离开它的域时,程序也结束了,所以你看不到输出2。

可以这么修改:

#include<iostream.h>

class m
{
public:
m(){cout<<"1";}
~m(){cout<<"2";}
};
int main()
{
{
m c;
}
system("pause");
}
kobefly 2005-03-09
  • 打赏
  • 举报
回复
析构函数当然是运行得拉

只是他得运行是再
main函数得最后

也就是system("pause");
之后

如果你用vc得话就会发现
再出现按任意剑结束

你按之后会出现2得
weiym 2005-03-09
  • 打赏
  • 举报
回复
~m()是在退出main()之前运行的,它没机会执行了

65,210

社区成员

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

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