【发布时间】:2020-09-28 17:47:50
【问题描述】:
class Distance {
private:
int feet;
int inches;
public:
// required constructors
Distance() {
feet = 0;
inches = 0;
}
Distance(int f, int i) {
feet = f;
inches = i;
}
friend ostream &operator<<( ostream &output, const Distance &D ) {
output << "F : " << D.feet << " I : " << D.inches;
return output;
}
friend istream &operator>>( istream &input, Distance &D ) {
input >> D.feet >> D.inches;
return input;
}
};
为什么要在>>的重载运算符中输入输入的引用并返回输入的引用? 当我尝试删除输入运算符参数中的&并返回正常输入时,为什么输入D3后istream仍然丢失数据。
friend istream &operator>>( istream &input, Distance &D ) {
input >> D.feet >> D.inches;
return input;
}
...
int main() {
Distance D3;
cin >> D3;//Input 4 5, data is not lost because pass by value???;
cout << "Third Distance :" << D3 << endl;// Output 4 5
int a=0;
cin>>a;// Still require input data ????
cout<<a;
【问题讨论】: