《计算机基础实验课程》实验五--多态.doc
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
院 系:计 算 机 学 院 实验课程:计算机基础实验课程 实验项目:多态 指导老师:XXX 开课时间:XXXX~ XXXX年度第 2学期 专 业:XXXX 班 级:XXXX级 本X班 学 生:XXX 学 号:XXXXXXXX 一、实验目的与要求: 1.掌握运算符重载的基本方法。 2.掌握虚函数的定义及多态性的实现。 二、实验内容: (一)实验题目一: 编写有理数(即分数,包括整数类型的分子和分母)类,并进行运算符重载,编 写运算符"+"、 "-"、 "*"、 "/"的重载函数,在主函数的函数体内中实现使用运算符直接进行有理数对象的加、减 、乘、除运算。 1.程序清单: #include<iostream> using namespace std; class Rnumber { public: Rnumber(){a=0;b=0;} Rnumber(int,int); Rnumber operator +(Rnumber &); Rnumber operator -(Rnumber &); Rnumber operator *(Rnumber &); Rnumber operator /(Rnumber &); void display(); private: int a; int b; }; Rnumber::Rnumber(int x,int y):a(x),b(y){} Rnumber Rnumber::operator +(Rnumber & x) { int i; i=(a>x.a)?a:x.a; for(;i!=0;i++) { if(i%b==0 && i%x.b==0) break; } return Rnumber(i/b*a+i/x.b*x.a,i); } Rnumber Rnumber::operator -(Rnumber & x) { int i; i=(a>x.a)?a:x.a; for(;i!=0;i++) { if(i%b==0 && i%x.b==0) break; } return Rnumber(i/b*a-i/x.b*x.a,i); } Rnumber Rnumber::operator *(Rnumber & x) { return Rnumber(a*x.a,b*x.b); } Rnumber Rnumber::operator /(Rnumber & x) { return Rnumber(a*x.b,b*x.a); } void Rnumber::display() { int n; n=(a<b)?a:b; for(;n>1;n--) { if(a%n==0 && b%n==0) { a=a/n; b=b/n; } } cout<<a<<"/"<<b; } int main() { Rnumber a1(3,5),a2(3,4),a3,a4,a5,a6; a3=a1+a2; a4=a1-a2; a5=a1*a2; a6=a1/a2; cout<<"a1="; a1.display(); cout<<" a2="; a2.display(); cout<<endl; cout<<"a1+a2="; a3.display(); cout<<endl; cout<<"a1-a2="; a4.display(); cout<<endl; cout<<"a1*a2="; a5.display(); cout<<endl; cout<<"a1/a2="; a6.display(); cout<<endl; return 0; } 2. 程序运行结果: (二)实验题目二: BaseRun类定义如下: class BaseRun { public: void Run(){cout<<〝\n…………class BaseRun::Run()……\n〞;} }; 定义DogRun,CarRun和PeopleRun类,都继承自BaseRun类,并重载Run()函数,使各 类中的Run()函数分别输出不同的内容。 1.程序清单: #include<iostream> using namespace std; class BaseRun { public: void Run() { cout<<"\n……class BaseRun::Run()……\n"; } }; class DogRun:public BaseRun { public: void Run() { cout<<"\n……class DogRun::Run()……\n"; } }; class CarRun:public BaseRun { public: void Run() { cout<<"\n……class CarRun::Run
- 粉丝: 84
- 资源: 9357
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- Docker在Ubuntu16.04上安装和部署Apache Storm
- test_kong.zip
- springboot权限验证学习-下
- SeetaFace6人脸质量评估C++代码实现Demo
- OCAuxiliaryTools
- 制药公司QC顶岗实习专题报告
- Rust 全面指南:从基础到高级,一网打尽 Rust 的编程知识