首先抛出结论:
- 让 operator= 返回一个 reference to *this
- 要在 operator= 中处理“自我赋值”
- 要在 operator= 中处理“异常”,不可盲目的将当前内存直接删除,防止分配新内存失败
让 operator= 返回 reference to *this
主要是基于以下两点考虑:
1. 减少不必要的拷贝构造函数的调用。
可以对比分析一下直接返回对象和返回对象的引用的区别:
class Widget
{
public:
Widget()
{
std::cout << "default construction" << std::endl;
}
Widget(const Widget& w)
{
std::cout << "copy construction" << std::endl;
}
//Widget operator=(const Widget& rhs)
//{
...
//return *this;
//}
~Widget()
{
std::cout << "default distruction" << std::endl;
<