重开一贴求c++析构的一问题
下面程序的输出为
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