实验七:多态性(二)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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; } 五、调试过程 少了个地址符