重开一贴求c++析构的一问题

jefferwind 2007-09-14 04:30:24

下面程序的输出为
output------------
c::c in B.cpp
c::~c in B.cpp
C::C in A.cpp
C::~C in B.cpp
最后一个为什么是C::~C in B.cpp
不是C::~C in A.cpp, 调试环境vc2005

c.cpp---------------
#include "stdafx.h"
#include "c.h"
#include <iostream>

class C
{
public:
C()
{
std::cout<<"C::C in B.cpp"<<std::endl;
}

~C()
{
std::cout<<"C::~C in B.cpp"<<std::endl;
}
protected:

private:
int j;
};

B::B()
{

}

B::~B()
{
C c;
}

e.cpp----------------------
#include "stdafx.h"
#include "e.h"
#include <iostream>


class C
{
public:
C(int i)
{
std::cout<<"C::C in A.cpp"<<std::endl;
}
~C()
{
std::cout<<"C::~C in A.cpp"<<std::endl;
}
protected:

private:
int i;
};

A::A()
{

}

A::~A()
{
C c(1);
}

main.cpp------------
#include "stdafx.h"
#include "c.h"
#include "e.h"

int _tmain(int argc, _TCHAR* argv[])
{
//std::cout<<"Main"<<std::endl;
A a;
B b;
return 0;
}

output------------
c::c in B.cpp
c::~c in B.cpp
C::C in A.cpp
C::~C in B.cpp
...全文
166 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
liufei1108 2007-09-14
  • 打赏
  • 举报
回复
接分!!
taodm 2007-09-14
  • 打赏
  • 举报
回复
不要认为“知名软件”就代码质量好。
jefferwind 2007-09-14
  • 打赏
  • 举报
回复
实际开发中遇到的问题,而且是 世界知名软件,我想应该会是个普遍现象
jefferwind 2007-09-14
  • 打赏
  • 举报
回复
在一个项目中,别人在自己的cpp中重定义了我的cpp中定义的类,但是类member不完全相同,导致我的cpp程序引起异常
xugang_2001 2007-09-14
  • 打赏
  • 举报
回复
楼上的不厚道
wh_peng 2007-09-14
  • 打赏
  • 举报
回复
楼上的说的都对
masterz 2007-09-14
  • 打赏
  • 举报
回复
VC2005里面可以写成这样:
std::cout<< __FUNCTION__ << " in " << __FILE__ <<std::endl;
taodm 2007-09-14
  • 打赏
  • 举报
回复
你换devcpp再试。

64,671

社区成员

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

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