<<、>>的重载和枚举类型的遍历

这次整理主要为枚举类型的遍历和"<<"以及">>"的重载。枚举类型的遍历的思想是重载++为”将a强行改为int类型,加一后再强行转化为枚举类型,然后用再循环遍历。<<、>>的重载要用到特殊的语法(见下文)。

enum WEEK{MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY};

    class WEEKDAYS{

    public:

        WEEK a;

        WEEKDAYS operator ++();

        friend ostream & operator << (ostream &os,WEEKDAYS &w);//ostream:流,容易内存溢出

        friend istream & operator >> (istream &is,WEEKDAYS &w);//cin、cout的重载,需要用到流和特殊语法

    };

    ostream & operator<<(ostream &os,WEEKDAYS &w){

        if(w.a==MONDAY){

            os<<"MONDAY";

        }

        if(w.a==TUESDAY){

            os<<"TUESDAY";

        }//此处省略以后部分

        return os;

    }

    istream & operator>>(istream &is,WEEKDAYS &w){

        string s;

        is>>s;

       if(s=="MONDAY"){

            w.a=MONDAY;

        }

          if(s=="TUESDAY"){

            w.a=TUESDAY;

        }//此处省略以后部分

        return is;

    }

    WEEKDAYS WEEKDAYS::operator++(){//重载“++”运算符,使其能够直接加类

        a=(WEEK)((int)a+1);//强行把a改为int再改回WEEK

        return *this;

    }

    int main(){

        WEEKDAYS sample;

        sample.a = MONDAY;

        while(1){//遍历“WEEK”枚举

            ++sample;

            cout<<sample;

            if(sample.a == SUNDAY){

                break;

            }

        }

       

        return 0;

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值