




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验四 多态性一、实验目的1、掌握运算符重载的基本方法。2、掌握友元运算符函数和成员运算符函数的使用方法及两者之间的不同。3、学习虚函数的定义与使用方法。4、了解静态多态性和动态多态性。5、学习使用虚函数和继承实现动态多态性。二、试验内容1、编写一个程序,要求:(1)生明一个类Complex(复数类),定义类Complex的两个对象c1和c2,对象c1通过构造函数直接指定复数的实部和虚部(类私有数据成员为double类型:real和imag)为2.5及3.7,对象c2通过构造函数直接指定复数的实部和虚部为4.2及6.5;(2)定义友元运算符重载函数,它以c1、c2对象为参数,调用该函数时能返回两个复数对象相加操作;(3)定义成员函数print,调用该函数时,以格式“real+imag i”输出当前对象的实部和虚部,例如:对象的实部和虚部分别是4.2和6.5,则调用print函数输出格式为:4.2+6.5 i;(4)编写主程序,计算出复数对象c1和c2相加结果,并将其结果输出。#includeclass Complexprivate:double real,imag;public:Complex(double x=0,double y=0)real=x;imag=y;friend Complex operator+(Complex a,Complex b);void print()cout复数是:endl;cout=0)cout+imagiendl;else coutimagiendl;Complex operator+(Complex a,Complex b)Complex c;c.real=a.real+b.real;c.imag=a.imag+b.imag;return c;void main()Complex a(2.5,3.7);Complex b(4.2,6.5); Complex c;c=a+b;c.print();2、编写一个程序,其中设计一个时间类Time,用来保存时、分、秒等私有数据成员,通过重载操作符“+”实现两个时间的相加。要求将小时范围限制在大于等于0,分钟范围限制在059分,秒钟范围限制在059秒。提示:时间类Time的参考框架如下:class Time public: Time(int h=0,int m=0,int s=0);/构造函数 Time operator+(Time &);/运算符重载函数,实现两个时间的相加 void disptime();/显示时间函数 private: int hours,minutes,seconds;#includeclass Time private: int hours,minutes,seconds; public: Time(int h=0,int m=0,int s=0) hours=h; minutes=m; seconds=s; Time operator+(Time &); void disptime(); ;Time Time:operator+(Time &a)Time b;b.hours=hours+a.hours;b.minutes=minutes+a.minutes;b.seconds=seconds+a.seconds;return b;void Time:disptime()cout时间是:hours小时minutes分seconds秒endl;void main()Time a(2,12,19);Time b(1,25,33);Time c;c=a+b;c.disptime();3、用友元运算符函数或成员运算符函数,重载运算符“+”、“-”、“*”,实现对实验二中实现的矩阵类的对象的加、减、乘法。#includeclass complexprivate:int row,col;int *p;public:complex(int a=0,int b=0)row=a;col=b;p=new intcol*row+1;void set_p()cout请输入矩阵:endl;for(int i=0;im;pi=m;void display()cout矩阵是:endl;for(int i=0;irow;i+)for(int j=0;jcol;j+)coutpi*row+j ;coutendl;coutendl;int getrow()return row;int getcol()return col;friend complex operator+(complex a,complex b);friend complex operator-(complex a,complex b);friend complex operator*(complex a,complex b);complex operator+(complex a,complex b)complex c(a.getrow(),a.getcol();for(int i=0;ia.getrow()*a.getcol();i+)c.pi=a.pi+b.pi;return c;complex operator-(complex a,complex b)complex c(a.getrow(),a.getcol();for(int i=0;ia.getrow()*a.getcol();i+)c.pi=a.pi-b.pi;return c;complex operator*(complex a,complex b)complex c(a.getrow(),b.getcol();static i;if(a.getcol()!=b.getrow()cout不可做乘法!endl;elsefor(int j=0;ja.row;j+)for(i=0;i(j+1)*a.col;i+) c.pi=0; for(int m=0;mb.col;m+)c.pi=a.pj*a.col+m*b.pj+m*b.col+c.pi;return c;void main()complex a(3,3);complex b(3,3);complex c(3,3);a.set_p();b.set_p();c=a+b;c.display();c=a-b;c.display();c=a*b;c.display();4、编写一个程序,用于进行集合的和、并和交运算。例如输入整数集合9,5,4,3,6,7和2,4,6,9,计算出他们进行集合的并、差和交运算后的结果。【提示】(1)可以用一下表达式实现整数集合的基本运算:s1+s2 两个整数集合的并运算s1-s2 两个整数集合的差运算s1*s2 两个整数集合的交运算(2)参考以下Set类的框架,用于完成集合基本运算所需的各项功能。class Set public: Set(); void input(int d);/向集合中添加一个元素 int length();/返回集合中的元素个数 int getd(int i);/返回集合中位置i的元素 void display();/显示集合的所有元素 Set operator+(Set s1);/成员运算符重载函数,实现集合的并运算 Set operator-(Set s1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025劳动合同转让协议范本
- 2025劳动合同书电子版
- 葡萄农业植保知识培训课件
- 物体测试题及答案
- 营销电气知识培训课件
- 物流考试试卷及答案
- 2025设备租赁合同书
- 物联网题库及答案
- 2025关于电子商务平台的合作协议
- 2025年液环真空泵项目建议书
- 邻里公用面积协议书
- 2025年职业指导师专业能力测试卷:职业指导师职业测评与职业发展
- 中级审计师考前必看试题及答案
- 《颅骨缺损修补术》课件
- 美术馆智能化建设技术方案
- 酒店访客登记管理制度
- 数据中心管理试题及答案要点
- 医保违规处理制度3
- 药学综合知识与技能11讲解
- “匠心杯”班组长管理创新技能竞赛(决赛)考试题库500题(含答案)
- 临床思维方法与医患沟通
评论
0/150
提交评论