重载+运算符以将2个多项式相加

overload the + operator to add 2 polynomials

本文关键字:多项式 2个 运算符 重载      更新时间:2023-10-16

我试图添加存储在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;
}

以+=和复制操作符开始,并使+操作符形成

有很多问题,但最明显的是第一行:

delete [] poly;

破坏其中一个求和(x + y中的x)。它也会泄漏内存,但此时这是次要的。

edit:我注意到你已经把delete[]从你的问题中删除了。这并不能解决问题,但会使问题变得更糟:您仍然覆盖了summand,但是现在泄漏了更多的内存。