1、深拷贝与浅拷贝(对于拷贝构造函数而言)
浅拷贝:将一个对象的值完全复制给另一个对象,二者拥有同一资源,容易出现重复释放的错误。
深拷贝:复制的过程中重新分配资源。
2、拷贝构造函数 与 赋值运算符
class Ctime
{
//......
};
void func(const Ctime &r)
{
Ctime newR = r; // 拷贝构造函数, newR未实例化
newR= r; // newR已实例化, 赋值运算符
}
3、什么时候重载赋值运算符?
当对象中有分配到堆之类的资源时, 需要将旧的资源释放,并重新分配资源;否则可以直接复制
由此可见赋值运算符重载有点像深拷贝,只是是在对象实例化之后进行的拷贝
将 赋值运算符重载的函数 修饰为 protected或private时,赋值操作只可以在类的范围内进行,防止了非法的赋值操作。
4、实现