//用C++语言实现分式相加
#include //C++输入输出流头文件
using namespace std; //引入我们的标准名字空间
//自己实现一个分式类
class FenShi
{
public://公有的,类外可以访问
//构造函数
FenShi(int fz = 0, int fm = 1){ m_fz = fz; m_fm = fm; }
void Print(){ cout << m_fz
<< "/"
<< m_fm; }
const FenShi operator + (const FenShi rhs)//lhs, rhs right hand
side 右手边
{
FenShi tmpFs;
tmpFs.m_fz = m_fz * rhs.m_fm + rhs.m_fz * m_fm;
tmpFs.m_fm = m_fm * rhs.m_fm;
tmpFs.YueFen();
return tmpFs;
}
void YueFen()
{
int max = maxGYS();
m_fz /= max;
m_fm /= max;
}
//友元函数
friend ostream & operator
<
FenShi & fs);
private://私有的,类外不可访问
int maxGYS()
{
int a = m_fz, b = m_fm;
int mod;
while (mod = a % b)
{
a = b;
b = mod;
}
return b;
}
int m_fz;//分子 member
int m_fm;//分母
};
//运算符重载
ostream & operator
<
FenShi & fs)
{
os << fs.m_fz
<< "/"
<< fs.m_fm;
return os;
}
//g++ aa.cpp -o aa.exe
int main()
{
FenShi fs1(2, 3), fs2(1,
3);//实例化一个FenShi类型的对象fs
//fs.Print();//fs对象调用了它的Print成员方法
//cout << fs;
FenShi fs3 = fs1 + fs2;
fs3.Print();
return 0;
}
零基础学习C/C++的同学加1396661304