我有以下程序片段:

Polynomial Polynomial:: add(const Polynomial b)
{
    Polynomial c;
    c.setRoot(internalAdd(root, c.root));
    c.setRoot(internalAdd(b.root, c.root));
    return c;
}

c = (a.add(b));

据我了解,该代码假定将a和b加在一起,然后通过调用复制构造函数将所得多项式分配给c。

但是,当我实际测试时,
  • c立即调用复制构造函数并尝试复制b,
  • 然后a和b添加
  • 然后c尝试通过赋值运算符
  • 获得结果多项式
  • 然后程序崩溃

  • 我该怎么解决?

    最佳答案

    Polynomial Polynomial::add(const Polynomial& b)
                                               ^
    

    如果您不希望复制该参数,则将其作为引用传递给上面。

    这可能无法解决您的崩溃问题-如果没有更多的代码(也无法通过调试来查明原因),就无法说出是什么原因导致的崩溃,但是它将消除对复制构造多项式参数的需要。

    10-06 07:36