类的拷贝控制
行为像值的类(深拷贝)
不同于浅拷贝会让两个指针指向同一块内存,深拷贝会开辟存放同样内容的新内存,再让新指针指向新内存。
深拷贝构造
深拷贝赋值
防范自赋值:如果rhs和本对象是同一个对象,delete ps会释放this和rhs指向的string。当我们在new表达式中试图拷贝(rhs.ps)时,就会访问一个指向无效内存的指针,其行为和结果是未定义的。
行为像指针的类(手动实现shared_ptr)
拷贝构造
拷贝赋值
swap函数实现
标准库有定义swap,应用于类对象时会通过拷贝副本交换两个类中所有成员。
希望缩减内存开销,自定义swap,只交换指针,不拷贝所指对象新副本。
swap函数优化
在重载的swap函数中,直接用std::swap会调用标准库,应该在函数第一行先using std::swap,实现先寻找有没有自定义swap,没有再调用标准库的。
swap在赋值运算中的应用
用swap来实现另一种拷贝赋值运算符的重载。
评论