/************************************
*两个分数相加
*operator 运算符重载
*
*************************************/
#include <iostream>
using namespace std;
class RN{
public:
RN(int _x, int _y);
void print()const;
// RN add(RN rn)const;
// r1.add(r2).print();
RN operator +(RN rn)const;
// RN sub(RN rn)const;
RN operator -(RN rn)const;
friend RN add(RN, RN);
private:
int x;
int y; //x/y
};
RN::RN(int _x, int _y):x(_x),y(_y){
}
//RN RN::add(RN rn)const{
RN RN::operator +(RN rn)const{
int _x = x*rn.y + rn.x*y;
int _y = y*rn.y;
return RN(_x, _y);
}
RN add(RN r1, RN r2){
int _x = r1.x*r2.y + r2.x*r1.y;
int _y = r1.y*r2.y;
return RN(_x, _y);
}
//RN RN::sub(RN rn)const{
RN RN::operator -(RN rn)const{
int _x = x*rn.y - rn.x*y;
int _y = y*rn.y;
return RN(_x, _y);
}
void RN::print()const{
cout << x << "/" << y << endl;
}
int main(){
RN r1(2,3);
RN r2(2,3);
r1.print();
r2.print();
// r1.add(r2).print();
(r1+r2).print();
add(r1, r2).print();
(r1-r2).print();
return 0;
}
/*
2/3
2/3
12/9
12/9
0/9
*/
operator 运算符重载
最新推荐文章于 2023-06-08 22:09:33 发布