我正在處理存儲在LinkedList中的多項式的C++項目。我想超載重要的操作符,如+, - ,*,/。 當函數返回結果時,我遇到了析構函數的一些問題。爲什麼重載的操作員不工作?
Polynomial& Polynomial::operator+(const Polynomial &p){
Polynomial sum = *this;
if (p.list.isEmpty())
return *this;
ListElement *temp = p.list.first;
while (temp){
sum.list.addSorted(temp->data);
temp = temp->next;
}
return sum;
}
此功能非常好,但return sum;
調用析構函數和我丟失數據。 Polynomial類的析構函數調用list.purge();
,它釋放鏈表中的動態內存。所有的類和方法都很好。
在主我得到:
Polynomial p1,p2,sum;
p1.input(); //here I input data for first pol
p2.input();
sum=p1+p2; //I overloaded operator=, it works fine
我必須做的 「停止」 析構函數?我想在屏幕上輸出Polynomial sum
。謝謝!
不要通過引用返回局部變量。 – AlexD
'Polynomial&Polynomial :: ...' - >'Polynomial Polynomial :: ...' – jaggedSpire
對於'operator +'來說,它可能不是一個好主意,它會破壞其操作的原始值。爲了避免這樣做,將此方法聲明爲'const'。 – tadman