【发布时间】:2012-01-01 17:34:33
【问题描述】:
我有以下程序sn-p:
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吗?
标签: c++ constructor copy variable-assignment operator-keyword