1

我正在尝试添加两个存储在二维数组中的多项式,第一行存储系数,第二行存储度数。

我创建了一个重载 + 函数,但在这里我使用 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;
}
4

2 回答 2

2

只需从 += 开始并复制运算符并使用 + 运算符形成它。

于 2013-03-02T10:53:23.820 回答
0

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

delete [] poly;

破坏加法之一(xin x + y)。它也会泄漏内存,但此时这是次要的。

编辑:我注意到你已经编辑delete[]了你的问题。这并不能解决问题,反而会使问题变得更糟:您仍在覆盖 summand,但现在正在泄漏更多内存。

于 2013-03-02T11:00:07.930 回答