030:你真的搞清楚为啥 while(cin >> n) 能成立了吗?
作者:互联网
题目:
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的样例测试,但受限于本人水平,如有疏漏,恳请斧正。
标签:return,int,flag,cin,while,bool,MyCin,n1,030 来源: https://blog.csdn.net/qq_38975493/article/details/115898087