#include <iostream>
using namespace std;
// 封装了一个名为Stu的类
class Stu
{
// 声明友元函数,允许这些函数直接访问Stu类的私有成员
friend const Stu operator+(const Stu &left,const Stu &right); // 加法重载函数
friend const Stu operator*(const Stu &left,const Stu &right); // 乘法重载函数
private:
int a; // 私有成员变量a
int b; // 私有成员变量b
public:
Stu() // 默认构造函数
{
// 默认构造,不执行任何特定初始化
}
Stu(int a,int b):a(a),b(b) // 带参数的构造函数,初始化列表方式赋值
{
// 使用初始化列表进行成员变量初始化
}
void show() // 成员函数,用于显示成员变量的值
{
cout << "a= " << a << endl;
cout << "b= " << b << endl;
}
// 成员函数实现"-"重载
const Stu operator-(const Stu &right) const // 减法重载函数,返回一个新的Stu对象,表示两个Stu对象相减的结果
{
Stu temp; // 创建一个临时的Stu对象
temp.a = a - right.a; // 计算a的差值
temp.b = b - right.b; // 计算b的差值
return temp; // 返回新的Stu对象
}
};
// 全局函数实现"+"重载
const Stu operator+(const Stu &left,const Stu &right) // 加法重载函数,返回一个新的Stu对象,表示两个Stu对象相加的结果
{
Stu temp; // 创建一个临时的Stu对象
temp.a = left.a + right.a; // 计算a的和
temp.b = left.b + right.b; // 计算b的和
return temp; // 返回新的Stu对象
}
// 全局函数实现"*"重载
const Stu operator*(const Stu &left,const Stu &right) // 乘法重载函数,返回一个新的Stu对象,表示两个Stu对象相乘的结果
{
Stu temp; // 创建一个临时的Stu对象
temp.a = left.a * right.a; // 计算a的乘积
temp.b = left.b * right.b; // 计算b的乘积
return temp; // 返回新的Stu对象
}
int main() // 主函数
{
Stu s1(10,20); // 创建一个Stu对象s1,并初始化
Stu s2(4,5); // 创建一个Stu对象s2,并初始化
Stu s3 = s1 + s2; // 使用重载的+运算符,将s1和s2相加,结果赋值给s3
Stu s4 = s1 - s2; // 使用Stu类中重载的-运算符,将s1和s2相减,结果赋值给s4
Stu s5 = s3 * s4; // 使用重载的*运算符,将s3和s4相乘,结果赋值给s5
s3.show(); // 调用s3的show函数,显示s3的成员变量值
s4.show(); // 调用s4的show函数,显示s4的成员变量值
s5.show(); // 调用s5的show函数,显示s5的成员变量值
return 0;
}