实验七:多态性(二)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

福建农林大学实验报告

实验7 多态性(二)

一、实验目的和要求

(1)熟悉运算符重载的定义和使用方法。

(2)掌握用成员函数、友元函数重载运算符的方法。

二、实验内容和原理

在C++中,分数并不是预先定义的,需要建立一个分数类。要求:定义并实现一个分数类,编写分数输出函数print();通过重载运算符+、-、*、/对分数进行算术运算,通过重载运算符==实现判定两个分数是否相等。可自己再增加其他运算符重载函数。最后编写主函数测试。

提示:设有两个分数a/b和c/d,则有:

(1)分数相加分子=a*d+b*c;分母=b*d

(2)分数相减分子=a*d-b*c;分母=b*d

(3)分数相乘分子=a*c;分母=b*d

(4)分数相除分子=a*d;分母=b*c

三、实验环境

1. 硬件:PC机;

2. 软件:Windows操作系统、Visual C++ 6.0

四、算法描述及实验步骤

#include

#include

#include

class Fraction

{ public:

Fraction(int x=0,int y=1);

void print();

friend Fraction operator +(Fraction&cl,Fraction&c2);

friend Fraction operator -(Fraction&cl,Fraction&c2);

friend Fraction operator *(Fraction&cl,Fraction&c2);

friend Fraction operator /(Fraction&cl,Fraction&c2); friend bool operator ==(Fraction&cl,Fraction&c2);

private:

int numerator,denominator;

void optimization();

};

Fraction::Fraction(int x,int y)

{ numerator=x;

denominator=y;

}

void Fraction::print()

{ if(denominator==1)

cout<

else if(numerator==0)

cout<

else

cout<

}

Fraction operator +(Fraction&c1,Fraction&c2)

{ Fraction temp;

temp.denominator=c1.denominator*c2.denominator;

temp.numerator=c1.numerator*c2.denominator+c1.denominator*c2.num erator;

return temp;

}

Fraction operator -(Fraction&c1,Fraction&c2)

{ Fraction temp;

temp.denominator=c1.denominator*c2.denominator;

temp.numerator=c1.numerator*c2.denominator-c1.denominator*c2.num erator;

return temp;

}

Fraction operator *(Fraction&c1,Fraction&c2)

{ Fraction temp;

temp.denominator=c1.denominator*c2.denominator;

temp.numerator=c1.numerator*c2.numerator;

return temp;

}

Fraction operator /(Fraction&c1,Fraction&c2)

{ Fraction temp;

temp.denominator=c1.denominator*c2.numerator;

temp.numerator=c1.numerator*c2.denominator;

return temp;

}

bool operator ==(Fraction&c1,Fraction&c2)

{

if(c1.numerator==c2.numerator&&c1.denominator==c2.denominator) return true;

else

return false;

}

int main()

{

Fraction c1(2,3),c2(6,7),c3;

c3=c1+c2;

cout<<"c1+c2=";c3.print();

c3=c1-c2;

cout<<"r1-r2=";c3.print();

c3=c1*c2;

cout<<"c1*c2=";c3.print();

c3=c1/c2;

cout<<"c1/c2=";c3.print(); return 0;

}

五、调试过程

少了个地址符

相关文档
最新文档