c++自我赋值问题

effective第11个条款举的这个例子:

 Widget& Widget::operator=(const Widget& rhs)    //一份不安全的operator=实现版本
 { 
    delete pb;
    pb = new Bitmap(*rhs.pb);     
    return *this;
 }

像上面这样写,自我赋值肯定会出现问题,但是为什么要先释放掉pb呢?为什么不直接像下面这样重赋值呢?


 Widget& Widget::operator=(const Widget& rhs)    //一份不安全的operator=实现版本
 {
     pb = new Bitmap(*rhs.pb);     
     return *this;
 }


陪伴而非守候
浏览 655回答 1
1回答

有只小跳蛙

第二种写法当自我复制时会造成内存泄漏
打开App,查看更多内容
随时随地看视频慕课网APP