C++ 重载+;运算符添加2个多项式

C++ 重载+;运算符添加2个多项式,c++,C++,我尝试添加两个存储在2D数组中的多项式,第一行存储系数,第二行存储度 我创建了一个重载+函数,但在这里我使用2D分配内存数组,当调用该函数时,它会崩溃 **更新:它现在运行,但结果是一些大的负数 仅供参考,我有一个复制构造函数和一个重载=运算符 // overload + Polynomial Polynomial::operator+(const Polynomial &right) { maxExp = right.maxExp; poly = new int *[

我尝试添加两个存储在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;
}
//重载+
多项式::运算符+(常数多项式和右)
{
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[]
,但你仍然在覆盖总和。谢谢,我明白你的意思,我删除了作业中的那一行
=
另外,程序现在运行,但结果是一些难看的负数,它们是什么?