https://blog.csdn.net/lwbeyond/article/details/6202256#commentBox
1. 什么是拷贝构造? 构造函数,参数是当前这个类const这个类型的引用
2. 拷贝构造什么时候执行? 用同类型的对象去初始化。
3. 拷贝构造存在什么问题? 类中默认的拷贝构造是一个浅拷贝,浅拷贝会使两个对象使用同一个空间
这个空间被两个对象删除两次。
4. 解决? 深拷贝,参数不使用值,使用引用
#include<iostream>
using namespace std;
class CPerson
{
public:
int *m_a;
public:
CPerson()
{
m_a = new int(10);
}
//CPerson(const CPerson& ps) // 默认拷贝构造,浅拷贝 (只复制了地址,没有复制空间)
//{
// this->m_a = ps.m_a;
//}
//CPerson(const CPerson& ps) // 深拷贝 (复制内存空间)
//{
// this->m_a = new int;
// *(this->m_a) = *(ps.m_a);
//}
~CPerson()
{
delete m_a;
m_a = 0;
}
};
void QQ(CPerson& pp)
{
}
int main()
{
//CPerson aa;
//CPerson bb(aa);
CPerson aa;
QQ(aa);
system("pause");
return 0;
}