1
我有以下程序片段:拷贝构造函数和赋值操作符都得到所谓
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试图获得最终多项式通过赋值运算符
- ,则程序崩溃
我能做些什么来解决这个问题?
您将需要向我们展示复制构造函数和赋值运算符以检测崩溃的原因。顺便说一句,你看到的行为或多或少可以解释查询命名返回值优化(NRVO)。 –
运营商关键字标签?你想写'Polynomial :: operator +(const Polynomial&rhs)const'吗? – Johnsyweb