1、操作符重载
2、类的封装
#include#include #include using namespace std;int gcd(int m,int n)///求最大公约数{ if(n==0) return m; else return gcd(n,m%n);}class Fraction{public: Fraction(); Fraction(int a,int b):molecule(a),denominator(b) {} void setdata(); void display(); Fraction operator *(Fraction &a) { Fraction c; int temp1;///分子 int temp2;///分母 int L;///最大公约数 temp1=this->molecule*a.molecule; temp2=this->denominator*a.denominator; L=gcd(temp1,temp2); c.molecule=temp1/L; c.denominator=temp2/L; return c; } Fraction operator +(Fraction &a) { Fraction c; int temp1;///分子 int temp2;///分母 int L;///最大公约数 temp1=this->molecule*a.denominator+this->denominator*a.molecule; temp2=this->denominator*a.denominator; L=gcd(temp1,temp2); c.molecule=temp1/L; c.denominator=temp2/L; return c; } Fraction operator -(Fraction &a) { Fraction c; int temp1;///分子 int temp2;///分母 int L;///最大公约数 temp1=this->molecule*a.denominator-this->denominator*a.molecule; temp2=this->denominator*a.denominator; L=gcd(temp1,temp2); c.molecule=temp1/L; c.denominator=temp2/L; return c; } Fraction operator /(Fraction &a) { Fraction c; int temp1;///分子 int temp2;///分母 int L;///最大公约数 temp1=this->molecule*a.denominator; temp2=this->denominator*a.molecule; L=gcd(temp1,temp2); c.molecule=temp1/L; c.denominator=temp2/L; return c; }private: int molecule;///分子 int denominator;///分母};Fraction::Fraction(){ molecule=0; denominator=1;}void Fraction::setdata(){ cin>>molecule>>denominator;}void Fraction::display(){ cout< <<"/"< <