ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:76.07KB ,
资源ID:2277620      下载积分:8 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/2277620.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(实验四-多态性.docx)为本站上传会员【精****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

实验四-多态性.docx

1、 实验四:多态性 一、实验目的 1、掌握运算符重载的基本方法。 2、掌握友元运算符函数和成员运算符函数的使用方法及两者之间的不同。 3、学习虚函数的定义与使用方法。 4、了解静态多态性和动态多态性。 5、学习使用虚函数和继承实现动态多态性。 二、试验内容1、编写一个程序,要求: (1)生明一个类Complex(复数类),定义类Complex的

2、两个对象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相加结果,并将其结果输出。 #include

3、stream> Using namespace std; class Complex { public: Complex() { real = 0; imag = 0; } Complex(double r,double i) { real = r; imag = i; } friend Complex operator+(Complex a,Complex b) { Complex c(a.real+b.real,a.imag+b.imag); return c; } void print() {

4、 cout<real<<"+ i"<imag<

5、0,分钟范围限制在0~59分,秒钟范围限制在0~59秒。 提示:时间类Time的参考框架如下: class Time { public: Time(int h=0,int m=0,int s=0);//构造函数 Time operator+(Time &);//运算符重载函数,实现两个时间的相加 void disptime();//显示时间函数 private: int hours,minutes,seconds; }; 代码: #include class Time { pu

6、blic: Time(int h=0,int m=0,int s=0)//构造函数 { hours = h; minutes = m; seconds = s; }; Time operator+(Time &a)//运算符重载函数,实现两个时间的相加 { Time t(this->hours+a.hours,this->minutes+a.minutes,this->seconds+a.seconds); if(t.seconds>59) { t.seconds-=60; t.minutes

7、1; } if(t.minutes>59) { t.minutes-=60; t.hours+=1; } return t; }; void disptime()//显示时间函数 { cout<hours<<"小时"<minutes<<"分钟"<seconds<<"秒"<

8、disptime(); Time t2(4,5,6); t2.disptime(); (t1+t2).disptime(); } 3、用友元运算符函数或成员运算符函数,重载运算符“+”、“-”、“*”,实现对实验二中实现的矩阵类的对象的加、减、乘法。 #include using namespace std; class Matrix { private: int row,col; int* m; public: int &operator()(int i,int j) { return m[(i-1)*this->co

9、l+j-1]; }; Matrix operator-(Matrix &a) { if(a.row!=this->row||a.col!=this->col) { cout<<"减?不?了¢?"<m[(i-1)*col+j-1]-a(i,j); } return resu

10、lt; }; Matrix operator*(Matrix &a) { if(a.row!=this->row||a.col!=this->col) { cout<<"乘?不?了¢?"<m[(i-

11、1)*col+k-1]*a(k,j); } return result; }; Matrix operator+(Matrix &a) { if(a.row!=this->row||a.col!=this->col) { cout<<"加¨®不?了¢?"<m[(i-1)*

12、col+j-1]+a(i,j); } return result; }; Matrix(int r,int c) { int a = r*c; m = new int[a]; row = r; col = c; }; void print() { for(int i=1;i<=row;i++) { for(int j=1;j<=col;j++) { cout<

13、序,用于进行集合的和、并和交运算。例如输入整数集合{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();//返回集合中的元

14、素个数 int getd(int i);//返回集合中位置i的元素 void display();//显示集合的所有元素 Set operator+(Set s1);//成员运算符重载函数,实现集合的并运算 Set operator-(Set s1);//成员运算符重载函数,实现集合的差运算 Set operator*(Set s1);//成员运算符重载函数,实现集合的交运算 Set operator=(Set s1);//成员运算符重载函数,实现集合的赋值运算 protected:

15、 int len;//统计结合中元素的个数; int s[MAX];//存放集合中的元素 }; #include using namespace std; class Set { public: Set(int l = 0) { len = l; }; void input(int d) { s[len] = d; len++; } int length() { return len; } int getd(int i

16、) { return s[i-1]; } void display() { for (int i = 0;i

17、g = 1; for (i = 0;i

18、 if(s1.s[j]==s[i]) flag = 0; if(flag) input(s1.s[j]); } for(int j=0;j

19、j

20、 int s[20]; }; void main() { Set a; a. operator=(Set s1); a. operator*(Set s1); a. operator+(Set s1); a. operator-(Set s1); } 5、下面提供一个体会继承中的多态性和虚函数在多态性中的作用的题目。请根据提示进行实验。定义类BaseFly,其中Fly()函数输出特定内容。例如: class BaseFly { public: void Fly()(cout<<"\n-----CIass BaseF

21、ly::Fly()-----\n";} }; (1)定义类BirdFly、DragonFly和PlaneFly,都继承自BaseFly,重载Fly()函数,使得各类中的Fly()函数分别输出不同的内容。 class BirdFly:public BaseFly { public: void Fly() {cout<<"\n-----class BirdFly::Fly()-----\n";} }; class DragonFly:public BaseFly { public: vol

22、d Fly(){cout<<"\n-----Class DragonFly::Fly()-----\n";) ); class PlaneFly:public BaseFly { public: void Fly(){cout<<"\n-----Class PlaneFly::Fly()-----\n";} }; (2)在main()函数中,用“new”关键字分配出以上四个类的实例,调用各个实例的Fly()函数测试多态性。请参考以下代码: int main() { cout<<"\n测试继承中的

23、多态性(Virtual? Or not?):\n'; BaseFly *pBase; BirdFly *pBird=new BirdFly; pBasc=pBird; cout<<"\nBirdFly->\n"; pBase->Fly(); DragonFly * pDragon=new DragonFly; pBase=pDragon; cout<<"\nDragonFly->\n"; pBase->Fly(); PlaneFly * pPlane=new PlaneFly; pBa

24、se=pPlane; cout<<"\nPlaneFly->\n"; pBase->Fly(); return 0, } (3) 将BaseFly::Fly()声明为virtual,在main()中定义BaseFly的指针:*pBase,依次分别指向UirdFly、DragonFly和P1aneFly,并调用各类的Fly()函数,体会虚函数作用。 BaseFly * pBase=new BaseFly; BirdFly *pBird=new BirdFly; pBase=pBird; 程序代码: #include<

25、iostream> using namespace std; class BaseFly { public: void Fly(){cout<<"\n-----CIass BaseFly::Fly()-----\n";} } class BirdFly:public BaseFly { public: void Fly() {cout<<"\n-----class BirdFly::Fly()-----\n";} }; class DragonFly:public BaseFly

26、 { public: void Fly(){cout<<"\n-----Class DragonFly::Fly()-----\n";} }; class PlaneFly:public BaseFly { public: void Fly(){cout<<"\n-----Class PlaneFly::Fly()-----\n";} }; int main() { cout<<"\n测试继承中的多态性(Virtual? Or not?):\n"; BaseFly *pBase;

27、 BirdFly *pBird=new BirdFly; pBase=pBird; cout<<"\nBirdFly->\n"; pBase->Fly(); DragonFly * pDragon=new DragonFly; pBase=pDragon; cout<<"\nDragonFly->\n"; pBase->Fly(); PlaneFly * pPlane=new PlaneFly; pBase=pPlane; cout<<"\nPlaneFly->\n"; pBase

28、>Fly(); BaseFly *pBase=new BaseFly; BirdFly *pBird=new BirdFly; pBase=pBird; return 0; } 6、写一个程序,定义抽象类Container: class Container { protected: double radius; public: Container(double r);//抽象类Container的构造函数 virtual double surface_area()=0;//纯

29、虚函数surface_area virtual double volume()=0;//纯虚函数volume }; 【要求】 建立3个继承Container的派生类:Sphere(球体)、Cylinder(圆柱体)、Cube(正方体),让每一个派生类都包含虚函数surface_area()和volume(),分别用来球体、圆柱体和正方体的表面积和体积。要求写出主程序,应用C++的多态性,分别计算边长为6.0的正方体、半径为5.0的球体,以及半径为5.0和高为6.0的圆柱体的表面积和体积。 #include using namespace std;

30、 class Container { protected: double radius; public: Container() { } Container(double r)//抽象类Container的构造函数 { radius = r; } virtual double surface_area()=0;//纯虚函数surface_area virtual double volume()=0;//纯虚函数volume }; class Sphere:

31、public Container { public: Sphere(double r) { radius = r; } double surface_area() { cout<<4*radius*radius*3.14<

32、ght; public: Cylinder(double r,double h) { radius = r; height = h; } double surface_area() { cout<<(2*radius*radius*3.14)+(2*radius*3.14*height)<

33、er { public: Cube(double r) { radius = r; } double surface_area() { cout<

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服