因此,我在C ++中创建了一个基本的多项式类,该类将这些多项式的系数动态存储在堆中。我目前正在重载运算符,以便可以将多项式加/减在一起以简化它们,等等。 但是,当我尝试重载*运算符时,我得到了意外的结果。看起来不是在返回数组中的索引值,而是在返回数组的位置。 这是我的.cpp文件中的* operator方法:
Polynomial Polynomial::operator*(Polynomial p) {
int maxDegree = (degree)+(p.degree - 1);
int *intArray3 = new int[maxDegree];
int i, j;
for (int i = 0; i < degree; i++) {
for (int j = 0; j < p.degree; j++) {
cout << getCoef(i) << " * " << p.getCoef(j) << " = " << getCoef(i)*p.getCoef(j) << endl;
intArray3[j] += (getCoef(i))*(p.getCoef(j));
cout << " intArray3[" << j << "] contains : " << intArray3[j] << endl;
}
}
return Polynomial(maxDegree, intArray3);}
行:
cout << getCoef(i) << " * " << p.getCoef(j) << " = " << getCoef(i)*p.getCoef(j) << endl;
和
cout << " intArray3[" << j << "] contains : " << intArray3[j] << endl;
返回
10 * 1 = 10
intArray3[0] contains : -842150441
在我的控制台中。我假设问题出在我在某处使用指针,但是我一生无法思考为什么。我以与+和-重载类似的方式实现了此重载,并且它们可以正常工作。任何帮助将不胜感激。干杯。