作业要求:
代码:
#include <iostream>
using namespace std;
class Stu
{
friend const Stu operator*(const Stu &L,const Stu &R);
friend bool operator<(const Stu &L,const Stu &R);
friend Stu operator-=(Stu &L,const Stu &R);
private:
int id;
int age;
public:
Stu()
{}
Stu(int id,int age):id(id),age(age)
{}
//算术运算符重载的成员函数实现
// const Stu operator*(const Stu &R) const
// {
// Stu temp;
// temp.id = name * R.id;
// temp.age = age * R.age;
// return temp;
// }
//关系运算符重载的成员函数实现
// bool operator<(const Stu &R)const
// {
// if(id < R.id && age < R.age)
// {
// return true;
// }
// else
// {
// return false;
// }
// }
//赋值运算符重载的成员函数实现
// Stu operator-=(const Stu &R)
// {
// id -= R.id;
// age -= R.age;
// return *this;
// }
void show()
{
cout << id << " " << age << endl;
}
};
//算术运算符重载的全局函数实现
const Stu operator*(const Stu &L,const Stu &R)
{
Stu temp;
temp.id = L.id * R.id;
temp.age = L.age * R.age;
return temp;
}
//关系运算符重载的全局函数实现
bool operator<(const Stu &L,const Stu &R)
{
if(L.id < R.id && L.age < R.age)
{
return true;
}
else
{
return false;
}
}
//赋值运算符重载的全局函数实现
Stu operator-=(Stu &L,const Stu &R)
{
L.id -= R.id;
L.age -= R.age;
return L;
}
int main()
{
Stu s1(1,15);
Stu s2(2,20);
Stu s3 = s1 * s2;
s3.show();
if(s3 < s2)
{
cout << "s3 > s2" << endl;
}else
{
cout << "s3 < s2" << endl;
}
s3 -= s1;
s3.show();
return 0;
}
代码运行效果图:
思维导图: