c++ - 谁能帮我看下下面这段代码,多项式乘法和+=操作运行不了,求助啊,到底错在哪了?
伊谢尔伦
伊谢尔伦 2017-04-17 13:33:13
0
1
477
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回覆(1)
洪涛

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

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

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

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

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

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

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

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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板