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

小伙看你根骨奇佳,潜力无限,来学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. 构造函数初始化成员时应尽量使用成员初始化列表赋初值。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板