逻辑与和逻辑或运算符重载

#include <iostream>


using namespace std;


class A{
public:
    int i;
    A(int m = 0):i(m){


    }
    A operator++(){
        cout<< "A operator++()" << endl;
        ++(this->i);
        return *this;
    }
     A operator++(int ){
        A x;
        x.i = i;
        i++;
        cout<< "A operator++(int)" << endl;
        return *this;
    }
    friend bool operator&&(const A &a, const A &b);
    friend bool operator||(const A &a, const A &b);
};


bool operator&&(const A &a, const A &b)
{
    cout<< "bool operator&&(A &a,A &b)" << endl;
    return ( (a.i && b.i)? true:false);
}


bool operator|| (const A &a, const A &b)
{
    cout<< "bool operator||(A &a,A &b)" << endl;
    return ( (a.i || b.i)? true:false);
}






int main()         //逻辑与运算符重载后,破坏原有的短路性
{
    int i = 0,j = 0;
    if(i && ++j){


    }
    cout << "j = " << j << endl;
    j = 0;
    if(i || j++){


    }
    cout << "j = " << j << endl;
    A a(0),b(1);
    if(a && ++b){


    }
    cout << "b.i = " << b.i << endl;
    if(a && b++){


    }
    cout << "b.i = " << b.i << endl;


    b.i = 0;
    if(a || b++){


    }
    cout << "b.i = " << b.i << endl;


    b.i = 0;
    if(a || ++b){


    }
    cout << "b.i = " << b.i << endl;
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值