【发布时间】:2017-03-12 01:28:12
【问题描述】:
这是我的代码。问题是我在析构函数中将类数组分配为零,当我在程序中进行运算符重载时,调用析构函数并且我的数组自动分配为 0。
//Overloading Plus Operator
Array Array::operator +(Array &obj)
{
for (int i = 0; i < 10; i++)
{
this->arr[i] = this->arr[i] + obj.arr[i];
}
return *this;
}
//Overloading Minus Operator
Array Array::operator -(Array obj)
{
for (int i = 0; i < 10; i++)
{
this->arr[i] = this->arr[i] - obj.arr[i];
}
return *this;
}
//Overloading Assignment Operator
void Array::operator =(Array &obj)
{
for (int i = 0; i < 10; i++)
{
arr[i] = obj.arr[i];
}
}
//Class Destructor
Array::~Array()
{
cout << "\n\nDeleting Object " << this->objNum << "\n";
for (int i = 0; i < 10; i++)
{
arr[i] = 0;
}
cout << "\n\n";
}
【问题讨论】:
-
您正在返回“this”的副本。
-
@FedeWar 那么如何解决这个问题呢?
-
我们需要一个最小的工作示例。
-
要么通过引用返回并调用函数
operator+=,要么停止处理this -
@FedeWar 这是我完整代码的链接anotepad.com/notes/353akc
标签: c++ oop operator-overloading destructor operator-keyword