三种运算符重载,每个至少实现一个运算符的重载
#include <iostream>
using namespace std;
class Person
{
friend const Person operator- (const Person &L, const Person &R);
friend bool operator<(const Person &L,const Person &R);
friend Person &operator/=(Person &L,const Person &R);
private:
int a;
int b;
public:
Person(){}
Person(int a, int b):a(a),b(b)
{}
// //成员函数实现-号运算符重载
// const Person operator- (const Person &R) const
// {
// Person temp;
// temp.a = a - R.a;
// temp.b = b - R.b;
// return temp;
// }
//成员函数实现<号运算符重载
//bool operator<(const Person &R) const
//{
// if(a < R.a && b < R.b)
// {
// return true;
// }else
// {
// return false;
// }
//}
//局部函数实现/=号运算符重载
// Person &operator/=(const Person &R)
// {
// a /= R.a;
// b /= R.b;
// return *this;
// }
void show()
{
cout << "a= " << a << " " << "b= " << b << endl;
}
};
//全局函数实现-号运算符重载
const Person operator-(const Person &L,const Person &R)
{
Person temp;
temp.a = L.a - R.a;
temp.b = L.b - R.b;
return temp;
}
//全局函数实现<号运算符重载
bool operator<(const Person &L,const Person &R)
{
if(L.a < R.a && L.b < R.b)
{
return true;
}else
{
return false;
}
}
//全局函数实现/=号运算符重载
Person &operator/=(Person &L,const Person &R)
{
L.a /= R.a;
L.b /= R.b;
return L;
}
int main()
{
Person p1(20,10);
Person p2(10,5);
Person p3 = p1 - p2;
p3.show();
if( p3 < p1)
{
cout << "p3 < p1" << endl;
}
p1 /= p3;
p1.show();
return 0;
}
效果图: