http://cxsjsxmooc.openjudge.cn/2021t3springall2/030/
这里面有前面学过的运算符“<<”的重载和
强制运算符转换的重载(第七周-1-06:50)(题目所问原因),其作用是将 while( m >> n1 >> n2) 语句中m读取完成后返回的 MyCin类型变量强制转换成bool变量。
#include <iostream> using namespace std; class MyCin { // 在此处补充你的代码 private: bool flag; public: MyCin():flag(true){} MyCin & operator>>(int & n){ if(flag == false) return *this; cin >> n; if(n == -1) flag = false; return *this; } operator bool(){ return flag; } }; int main() { MyCin m; int n1,n2; while( m >> n1 >> n2) //重载">>" cout << n1 << " " << n2 << endl; return 0; }
注:以上代码虽然通过了OpenJudge的样例测试,但受限于本人水平,如有疏漏,恳请斧正。