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

时间:2013-03-02 10:51:34

标签: c++

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

2 个答案:

答案 0 :(得分:2)

从+ =开始并复制运算符并使用+运算符表单。

答案 1 :(得分:0)

存在多个问题,但最明显的问题是第一行:

delete [] poly;

销毁其中一个加号(x中的x + y)。它也会泄漏内存,但此时这是次要的。

修改:我注意到您已经编辑了delete[]的问题。这不能解决问题,但会使情况变得更糟:你仍在覆盖这个总和,但现在却在泄漏更多的内存。