五、深拷贝与浅拷贝
1、浅拷贝:对基本类型数据以及简单的对象直接复制内存的拷贝。但是,当类的成员包含指针的时候,使用浅拷贝是将拷贝对象的地址赋值给了新的对象,导致两个指针指向了同一块内存空间,这时候浅拷贝就不能满足实际要求了,需使用深拷贝。
示例: Test (const Test &other)
{
m_id = other.m_id;
m.name = other.m_name;
}
2、深拷贝:当类持有其它资源(如动态分配的内存、指向其他数据的指针等)时使用的拷贝。此时默认的拷贝构造函数不能拷 贝这些资源,我们必须显式地定义拷贝构造函数,以完整地拷贝对象的所有数据。
注:对于简单的类,默认的拷贝构造函数一般就够用了&