C++ 重载+;运算符添加2个多项式
我尝试添加两个存储在2D数组中的多项式,第一行存储系数,第二行存储度 我创建了一个重载+函数,但在这里我使用2D分配内存数组,当调用该函数时,它会崩溃 **更新:它现在运行,但结果是一些大的负数 仅供参考,我有一个复制构造函数和一个重载=运算符C++ 重载+;运算符添加2个多项式,c++,C++,我尝试添加两个存储在2D数组中的多项式,第一行存储系数,第二行存储度 我创建了一个重载+函数,但在这里我使用2D分配内存数组,当调用该函数时,它会崩溃 **更新:它现在运行,但结果是一些大的负数 仅供参考,我有一个复制构造函数和一个重载=运算符 // overload + Polynomial Polynomial::operator+(const Polynomial &right) { maxExp = right.maxExp; poly = new int *[
// 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;
}
//重载+
多项式::运算符+(常数多项式和右)
{
maxExp=right.maxExp;
多边形=新整数*[maxExp];
对于(int i=0;i
只需从+=开始,然后复制运算符,并使+运算符成为该运算符。存在多个问题,但最突出的问题是第一行:
delete [] poly;
销毁其中一个总和(位于x+y
中的x
)。它还泄漏内存,但在这一点上这是次要的
编辑:我注意到您编辑了
delete[]
,这与您的问题无关。这并不能解决问题,但会使问题变得更糟:您仍然在覆盖求和,但现在正在泄漏更多内存。这是delete poly[]
应该做什么?它似乎不合适。为什么不使用std::vector
来避免很多内存管理方面的麻烦呢?@NPE对不起,我还没有学习vector,所以我不知道如何使用它“它崩溃了”。。。你应该更具体一些。你试过什么调试?它在哪里坠毁?您为使其崩溃提供了什么输入?崩溃时局部变量的状态是什么?。。。帮助我们帮助您。学习std::vector
比学习内存管理更容易。对不起,我不明白,你是什么意思?从+=开始是的,那是个错误,它是为作业准备的。但是如果没有这一行,当这个函数被调用时,程序仍然会崩溃called@Herious:嗯,你已经删除了delete[]
,但你仍然在覆盖总和。谢谢,我明白你的意思,我删除了作业中的那一行=
另外,程序现在运行,但结果是一些难看的负数,它们是什么?