重载+运算符以将2个多项式相加
overload the + operator to add 2 polynomials
我试图添加存储在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,但是现在泄漏了更多的内存。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 如何在C++中从两个单独的for循环中添加两个数组
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- 处理多个异常集合的C++方法
- 什么时候在C++中返回常量引用是个好主意
- 给定n个元素的m个集合.在C++中找到出现在最大集合数中的元素
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- 如何对两个 4 位数字进行乘法,将它们视为 C++ 中的多项式
- 最小二乘多项式拟合仅适用于偶数个坐标
- 进入第二个多项式后如何修复分割错误?
- NTRUEncrypt:使用开源标准算法中的描述无法正确找到两个多项式的GCD,无法定义是否存在多边形的逆
- 仅使用 3 个变量 (C++) 计算 4 次多项式的值
- 重载 * 运算符以将两个多项式相乘
- 将两个多项式与向量系数进行比较C++
- 确定两个多项式相乘结果中的项数
- 重载+运算符以将2个多项式相加
- 重载+运算符将两个多项式相加
- 在一些 K 个不同的整数、模786433处找到多项式的值