我正在处理存储在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