c++重學筆記9 - operator=()的陷阱

喜歡這篇文章嗎?喜歡的話去看博主的置頂博客,即可依據分類找到此文章的原版得到更好的體驗,

圖片及代碼顯示的問題,筆者深感抱歉,想要更好的體驗去原博文即可。


title: c++重學筆記9 - operator=()的陷阱
mathjax: true
date: 2020-03-13 19:35:01
categories: [c++重學筆記]
tags: [c++重學筆記]
keywords: [c++重學筆記]


operator=

   定義賦值函數難嗎?難,真的特別難,如果你能看出下面的代碼中賦值函數的問題,那你就懂爲什麼難了。

#include <iostream>
using namespace std;

class my_class {
  int *p;

 public:
  my_class &operator=(const my_class &rhs) {
    delete p;
    p = new int(*rhs.p);
    return*this;
  }
};

int main() {}

   這裏的問題其實很明顯,這個賦值不支持自我賦值。解決方案可以說在最前面特判掉自我賦值,或者是先拷貝最後再delete,又或者是用拷貝構造函數拷貝一份,然後swap來實現。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章