传统上C++是通过拷贝构造函数完成通过一个对象初始化另一个对象:
class A{
public:
A()
{
m_i = new int(1);
cout<<"Construct A, this addr:"<<this<<", m_i addr:"<<m_i<<endl;
}
A(const A &a):m_i(new int(*a.m_i))
{
cout<<"Copy Construct A, ori addr:"<<&a<<" ori m_i addr:"<<a.m_i<<" *m_i="<<*a.m_i<<", this addr:"<<this<<" m_i addr:"<<m_i<<" *a.m_i="<<*a.m_i<<endl;
}
~A()
{
delete(m_i);
m_i = 0;
cout<<"Destruct A, this addr:"<<this<<" m_i addr:"<<m_i<<endl;
}
int *m_i;
};
A getA()
{
return A();
}
int main(){
A a3 = getA();
cout<<"a3 addr:"<<&a3<<" a3.m_i addr:"<<