我正在尝试添加存储在2D数组中的两个多项式,第一行存储系数,第二行存储度数。
我创建了一个重载+函数但是在这里我使用2D分配的内存数组,并在调用函数时崩溃。
**更新:它现在运行,但结果是一些大的负数
仅供参考,我有一个复制构造函数和一个重载=运算符
// overload +
Polynomial Polynomial::operator+(const Polynomial &right)
{
maxExp = right.maxExp;
poly = new int *[maxExp];
for (int i=0; i < maxExp; i++)
*(poly + i) = new int[2];
Polynomial temp = *this;
for (int i=0; i < maxExp; i++)
{
for (int j=0; j < 2; j++)
{
temp.poly[i][j] = poly[i][j] + right.poly[i][j];
}
}
return temp;
}
答案 0 :(得分:2)
从+ =开始并复制运算符并使用+运算符表单。
答案 1 :(得分:0)
存在多个问题,但最明显的问题是第一行:
delete [] poly;
销毁其中一个加号(x
中的x + y
)。它也会泄漏内存,但此时这是次要的。
修改:我注意到您已经编辑了delete[]
的问题。这不能解决问题,但会使情况变得更糟:你仍在覆盖这个总和,但现在却在泄漏更多的内存。