条款11:在operator=中处理“自我赋值”
比较稳妥的赋值构造函数
Widget& operator=(const Widget& rhs) { // 证同测试 if (this == &rhs) return *this; //先记住原来的,再用new分配内存,再delete释放内存。以防止new异常导致已经delete了 WidgetImpl* pOrig = this->pImpl; this->pImpl = new WidgetImpl(rhs.pImpl); delete[] pOrig; return *this; }
常记溪亭日暮,沉醉不知归路。兴尽晚回舟,误入藕花深处。争渡,争渡,惊起一滩鸥鹭。
昨夜雨疏风骤,浓睡不消残酒。试问卷帘人,却道海棠依旧。知否?知否?应是绿肥红瘦。