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

上一篇:Android利用广播监听设备安装和卸载应用程序


下一篇:SAP RETAIL 为门店代码维护Plant Group