题目:
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的样例测试,但受限于本人水平,如有疏漏,恳请斧正。