条款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;
        }

 

posted @ 2022-03-20 16:49  htj10  阅读(21)  评论(0编辑  收藏  举报
TOP