关于C++析构函数

来源:百度知道 编辑:UC知道 时间:2024/06/07 20:14:37
我重载了一个二元操作符,定义了一个析构函数
为什么在运行的时候 操作符函数执行完把作为操作数的两个对象给我删掉了?
怎么改才能让它不删啊?
class Polynomials {
public:
int *poly;
int top;

Polynomials();
Polynomials(const Polynomials &);
Polynomials(int constant);
Polynomials(int coefficient, int exponent);

Polynomials operator +(const Polynomials &);
};

Polynomials Polynomials::operator +(const Polynomials &poly2) {
Polynomials result;
int max, min;
max = ((top >= poly2.top) ? top : poly2.top);
min = ((top <= poly2.top) ? top : poly2.top);
result.poly = new int[max];
for(int i = 0; i != max; i++) {
if (i < min) {
result.poly[i] = poly[i] + poly2.poly[i];
} else {
if (top >= poly2.top) {
result.poly[i] = poly[i];
} else {
result.poly[i] = poly2.poly[i];
}
}
}
result.top = max;
return result;
}
就贴点关键的

Polynomials Polynomials::operator +(const Polynomials &poly2)
其中一个操作数是类本身,另一个是poly2
肯定不会释放的

你是不是通过在析构函数中打印信息判断析构的。
因为在函数中会创建临时变量

释放的是临时变量