所以我想寫這個類。我希望能夠做的事情之一是將兩個加在一起,所以我超載了加法運算符。但是這裏的東西,我不想返回一個指針,我想要「按值」返回類,以便添加操作符不會干擾指針。按值C++返回一個類?
我目前的方法不起作用,因爲我創建的類超出了範圍,而我能想到的唯一方法就是用指針來完成。有沒有其他的方式來做到這一點,而不需要調用new和分配內存,這些內存稍後必須由類的用戶刪除?
當前的代碼:
Polynomial operator+(const Polynomial &lhs, const Polynomial &rhs)
{
Polynomial newPoly;
newPoly.addWithOther(lhs);
newPoly.addWithOther(rhs);
return newPoly;
}
這應該可以正常工作,但我會用'operator + ='來實現它。 – chris
爲什麼不能'Polynominal newPoly(lhs); newPoly.operator + =(右);返回newPoly;'。另外,newPoly退出範圍應該不會成爲問題,因爲您正在返回它,這表明您的副本或分配構造函數存在問題。 – kfsone
你應該問自己以下問題;如果您感到困惑,請將「Polynomial」類的定義(不一定是實現)添加到您的問題中。 「Polynomial」類是否有默認的構造函數,以便「Polynomial newPoly」語句正確?這可能由編譯器生成。 Polynomial類是否有複製構造函數,以便您的返回值可以複製到調用上下文中?再次,這可能由編譯器生成。另一個說明:寫它「不起作用」不是很有幫助。你看到什麼編譯器/運行時錯誤? – NicholasM