浅拷贝:简单的赋值拷贝操作
深拷贝:在堆区重新申请空间,进行拷贝操作
如果利用编译器提供的拷贝构造函数,会做浅拷贝操作。
浅拷贝带来的问题就是堆区的内存重复释放.
如果直接浅拷贝,再调用delete析构函数,会出现堆区同一个空间释放两次,因此要编写自己的拷贝构造函数。
class Person
{
Person()
{
cout<<“Person的默认构造函数调用”<<endl;
}
Person(int age, int hight)
{
m_Age = age;
m_Hight = new int(hight);
cout<<“Person的默认构造函数调用”<<endl;
}
Person(const Person& a)
{
m_Age = a.m_Age;
m_Height == new int(*a.m_Hight);
cout<<“Person的默认构造函数调用”<<endl;
}
~Person()
{
if(m_Height != NULL)
delete m_Height;
m_Height = NULL;
}
int m_Age;
int *m_Height;
}