C++
运算符重载
请定义一个分数类,拥有两个整数的私有数据成员,分别表示分子和分母(分母永远为正数,符号通过分子表示)。
重载运算符加号"+",实现两个分数的相加,所得结果必须是最简分数。
#include <iostream>
using namespace std;
class Score
{
int x=0;//分母
int y=0;//分子
public:
Score()
{}
friend Score operator + (Score &s1,Score &s2)
{
Score s3;
s3.x=s1.x*s2.x;
s3.y=s1.y*s2.x+s2.y*s1.x;
for(int i=2;i<=max(s3.x,s3.y);i++)
{
if (s3.x%i==0&&s3.y%i==0)
{
s3.x=s3.x/i;
s3.y=s3.y/i;
i=2;
}
}
return s3;
}
void get(int _y,int _x)
{
x=_x;
y=_y;
}
void display()
{
if(y%x==0||y==0)
{
cout<<y/x;
}
else
{
cout<<y<<" "<<x;
}
}
};
int main()
{
Score s1,s2,s3;
int x1,x2,y1,y2;
cin>>y1>>x1>>y2>>x2;
s1.get(y1,x1);
s2.get(y2,x2);
s3=s1+s2;
s3.display();
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统