搜尋

首頁  >  問答  >  主體

c++ - 谁能帮我看下下面这段代码,多项式乘法和+=操作运行不了,求助啊,到底错在哪了?

伊谢尔伦伊谢尔伦2804 天前474

全部回覆(1)我來回復

  • PHP中文网

    PHP中文网2017-04-17 13:35:13

    大體看了一下,有幾個問題。

    1. 幾個複合賦值運算子定義有問題,例如:

      Polynomial& operator+=(const Polynomial&x) {
        return *this+ x;  // 此处返回了局部变量的引用,是未定义行为
      }

      原因是*this+x呼叫了Polynomial::operator+,回傳了一個新的Polynomial變量,這個變數是operator+=的局部變量,而operator+=的回傳值是這個新變數的引用,所以是未定義行為。其他幾個複合賦值運算子類似。

    2. 題主幾個運算子重載的實作不是很好,例如:

      • operator!=operator==中只有一個需要具體實現,另一個應該調用被實現的那個;

      • operator+=應該具體實現,而operator+應該調用operator+=,原因參考這裡,減法、乘法類似;

    3. 建構子初始化成員時應盡量使用成員初始化列表賦初值。

    回覆
    0
  • 取消回覆