重载提取和插入操作符C ++

时间:2012-09-27 14:18:15

标签: c++ overloading extraction insertion

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

主要

/ 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;
}

1 个答案:

答案 0 :(得分:4)

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

应该是

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

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

Polynomial P1;
cin >> P1;
在此之后

P1不会被修改。