行为像值的类(深拷贝)

不同于浅拷贝会让两个指针指向同一块内存,深拷贝会开辟存放同样内容的新内存,再让新指针指向新内存。

深拷贝构造

深拷贝赋值


防范自赋值:如果rhs和本对象是同一个对象,delete ps会释放this和rhs指向的string。当我们在new表达式中试图拷贝(rhs.ps)时,就会访问一个指向无效内存的指针,其行为和结果是未定义的。

行为像指针的类(手动实现shared_ptr)

拷贝构造

拷贝赋值

swap函数实现

标准库有定义swap,应用于类对象时会通过拷贝副本交换两个类中所有成员。

希望缩减内存开销,自定义swap,只交换指针,不拷贝所指对象新副本。

swap函数优化

在重载的swap函数中,直接用std::swap会调用标准库,应该在函数第一行先using std::swap,实现先寻找有没有自定义swap,没有再调用标准库的。

swap在赋值运算中的应用

用swap来实现另一种拷贝赋值运算符的重载。