思维导图
完成关系运算符重载,实现成员函数和全局函数的版本。
#include <iostream>
using namespace std;
class Computer
{
friend bool operator>(const Computer &L,const Computer &R);//声明友元全局函数
friend bool operator<(const Computer &L,const Computer &R);
friend bool operator==(const Computer &L,const Computer &R);
friend bool operator>=(const Computer &L,const Computer &R);
friend bool operator<=(const Computer &L,const Computer &R);
friend bool operator!=(const Computer &L,const Computer &R);
private:
int a;
int b;
public:
Computer()//无参构造函数
{}
Computer(int a,int b):a(a),b(b)//有参构造函数
{}
// bool operator>(const Computer &R) const//成员函数实现大于关系运算符重载
// {
// if(a>R.a && b>R.b)
// {
// return true;
// }
// else
// {
// return false;
// }
// }
// bool operator<(const Computer &R) const//成员函数实现小于关系运算符重载
// {
// if(a<R.a && b<R.b)
// {
// return true;
// }
// else
// {
// return false;
// }
// }
// bool operator==(const Computer &R) const//成员函数实现等于关系运算符重载
// {
// if(a==R.a && b==R.b)
// {
// return true;
// }
// else
// {
// return false;
// }
// }
// bool operator>=(const Computer &R) const//成员函数实现大于等于关系运算符重载
// {
// if(a>=R.a && b>=R.b)
// {
// return true;
// }
// else
// {
// return false;
// }
// }
// bool operator<=(const Computer &R) const//成员函数实现小于等于关系运算符重载
// {
// if(a<=R.a && b<=R.b)
// {
// return true;
// }
// else
// {
// return false;
// }
// }
// bool operator!=(const Computer &R) const//成员函数实现小于关系运算符重载
// {
// if(a!=R.a && b!=R.b)
// {
// return true;
// }
// else
// {
// return false;
// }
// }
void show()
{
cout << "a = " << a << " " << "b = " << b << endl;
}
};
bool operator>(const Computer &L,const Computer &R)//全局函数实现大于关系运算符重载
{
if(L.a>R.a && L.b>R.b)
{
return true;
}
else
{
return false;
}
}
bool operator<(const Computer &L,const Computer &R)//全局函数实现小于关系运算符重载
{
if(L.a<R.a && L.b<R.b)
{
return true;
}
else
{
return false;
}
}
bool operator==(const Computer &L,const Computer &R)//全局函数实现等于关系运算符重载
{
if(L.a==R.a && L.b==R.b)
{
return true;
}
else
{
return false;
}
}
bool operator>=(const Computer &L,const Computer &R)//全局函数实现大于等于关系运算符重载
{
if(L.a>=R.a && L.b>=R.b)
{
return true;
}
else
{
return false;
}
}
bool operator<=(const Computer &L,const Computer &R)//全局函数实现小于等于关系运算符重载
{
if(L.a<=R.a && L.b<=R.b)
{
return true;
}
else
{
return false;
}
}
bool operator!=(const Computer &L,const Computer &R)//全局函数实现不等于关系运算符重载
{
if(L.a!=R.a && L.b!=R.b)
{
return true;
}
else
{
return false;
}
}
int main()
{
Computer c1(3,3);
Computer c2(10,10);
if(c2>c1)//注意:全局函数和成员函数实现关系运算符的重载只能选择其中一个!!!
{
cout << "c2>c1" << endl;
}
if(c1<c2)
{
cout << "c1<c2" << endl;
}
Computer c3(10,10);
if(c2==c3)
{
cout << "c2=c3" << endl;
}
Computer c4(100,100);
if(c3!=c4)
{
cout << "c3!=c4" << endl;
}
return 0;
}