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