作业要求:
代码:
#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;
}
代码运行效果图:
思维导图: