C++ 对象构造与析构以及内存布局(三)

2014-11-24 03:33:27 · 作者: · 浏览: 2
ut<<"Constructor M2 "<
m_Construtor.insert(std::pair<__int64,std::string>((__int64)this,"Constructor M2 "));
}
virtual ~M2()
{
std::cout<<"Destructor M2 "<
}
};
class X: public D1, public D2
{
public:
X()
{
std::cout<<"Constructor X "<
m_Construtor.insert(std::pair<__int64,std::string>((__int64)this,"Constructor X "));
}
virtual ~X()
{
std::cout<<"Destructor X "<
}
private:
M1 _m1;
M2 _m2;
};
int _tmain(int argc, _TCHAR* argv[])
{
//B b;
int i;
X *pX = new X;
std::cout<<"--------------------------------------------"<<'\n';
pX->fun();
std::cout<<"--------------------------------------------"<<'\n';
cout.setf(ios::showbase | ios::uppercase); //设置基指示符输出和数值中的字母大写输出
std::multimap<__int64,std::string,classcomp> ::iterator iter;
for (iter = m_Construtor.begin();iter != m_Construtor.end();++iter)//遍历
{
cout<
}
std::cout<<"--------------------------------------------"<<'\n';
delete pX;
pX = NULL;
std::cin>>i;
return 0;
}
运行结果:
Constructor B1 00127F94
Constructor V1 00127F98
Constructor B2 00127F9C
Constructor V2 00127F9C
Constructor D1 00127F88
Constructor B3 00127F80
Constructor D2 00127F80
Constructor M1 00127F8C
Constructor M2 00127F90
Constructor X 00127F80
--------------------------------------------
fun B1 00127F94
--------------------------------------------
0X127F80 Constructor B3
0X127F80 Constructor D2
0X127F80 Constructor X
0X127F88 Constructor D1
0X127F8C Constructor M1
0X127F90 Constructor M2
0X127F94 Constructor B1
0X127F98 Constructor V1
0X127F9C Constructor B2
0X127F9C Constructor V2
--------------------------------------------
Destructor X 00127F80
Destructor M2 00127F90
Destructor M1 00127F8C
Destructor D2 00127F80
Destructor B3 00127F80
Destructor D1 00127F88
Destructor V2 00127F9C
Destructor B2 00127F9C
Destructor V1 00127F98
Destructor B1 00127F94
发现类B1还少构造了一次。哈哈~~果然很强大啊。。