c++的运算符重载题目

来源:百度知道 编辑:UC知道 时间:2024/06/23 02:04:06
定义分数类:
//fraction.h
#include <iostream.h>
class fraction{
private:
int above;
int below;
public:
//…
};
//使用以下代码编程:
#include "fraction.h"
#include <iostream.h>
int main()
{
fraction f1(-2,-3),f2,f3,f4,f5(6);
cin>>f2; //input: -2 3
cout << "f1=" << f1 << endl;
cout << "f2=" << f2 << endl;
f3=f1+f2;
f4=f1+1;
f5=3+f2;
cout << "f3=" << f3 << endl;
cout << "f4=" << f4 << endl;
cout << "f5=" << f5 << endl;
return 0;
}
//运行程序,输入: -2 3 将得到以下结果::
f1=2/3
f2=-2/3
f3=0
f4=5/3
f5=7/3
请您把答案写的详细点,尽量通俗易懂,最好是有注释啦~~~~~

//fraction.h
#include <iostream.h>
class fraction{
private:
int above;
int below;
public:
friend fraction operator+(fraction &a , fraction &b){
int x,y;
x=(a.above)*(b.below)+(a.below)*(b.above);
y=(a.below)*(b.below);

return fraction(x,y);
}
fraction &operator=(fraction &a){
this->above=a.above;
this->below=a.below;

return *this;
}
friend fraction operator+(fraction &a , int b){
int x,y;
x=a.above+b*a.below;
y=a.below;

return fraction(x,y);
}

friend fraction operator+(int a , fraction &b){
int x,y;
x=a*b.below+b.above;
y=b.below;

return fraction(x,y);
}

friend ostream &operator<<(ostream &out ,const fraction a){
out<<a.above<<"/"<<a.below;

return out;
}
friend istream &operator