重载提取和插入运算符 C++

Overloading Extraction and Insertion Operators C++

本文关键字:运算符 C++ 插入 提取 重载      更新时间:2023-10-16

您好,我已经重载了插入和提取运算符。 当我运行程序时,插入似乎没有输出值,尽管提取将值放入类中。似乎实例的插入视图中没有值。

主要

/ Input Poly
cout << "Input p1: " << endl;
Polynomial P1;
cin >> P1;
// Output Poly
cout << "p1(x) = " << P1 << 'n' << endl;

类函数

//Insertion
ostream& operator<<(ostream& os, Polynomial Poly){
for (int i=0; i < Poly.polyNum; i++) {
    os << Poly.poly[i] << " x^" << i;
    if(i != Poly.polyNum - 1){
        os << " + ";
    }
}
return os;
}
//Extraction
istream& operator>>(istream& is, Polynomial Poly){
int numP = 0;
int * tempP;
is >> numP;
tempP = new int [numP+1];
for (int i=0; i < numP; i++) {
    is >> tempP[i];
}
Poly.polyNum = numP;
Poly.poly = new int[Poly.polyNum +1];
for (int i=0; i < Poly.polyNum; i++) {
    Poly.poly[i] = tempP[i];
}
return is;
}
istream& operator>>(istream& is, Polynomial Poly)

应该是

istream& operator>>(istream& is, Polynomial& Poly)

您现在所做的只是更改对象副本的成员:

Polynomial P1;
cin >> P1;

在此之后,P1不会修改。