电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > DOC文档下载
分享到微信 分享到微博 分享到QQ空间

实验3-多态性

  • 资源ID:432048501       资源大小:86KB        全文页数:13页
  • 资源格式: DOC        下载积分:15金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要15金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

实验3-多态性

西华大学实 验 报 告( 2010/ 2011 学年 第 二 学期)课程名称面向对象程序设计实验名称多态性实验时间年月日指导单位指导教师学生姓名班级学号学院(系)专 业实 验 报 告实验名称多态性实验实验类型综合实验学时2×2一、 实验目的和要求(1)进一步熟悉类的设计、运用继承与派生机制设计派生类,合理设置数据成员和成员函数。(2)掌握双目运算符、单目运算符的重载方法,对常用算术运算符能在自定义类中通过友元函数、成员函数进行重载,以实现静态多态性。(3)掌握通过继承、虚函数、基类的指针或引用实现动态多态性的方法。(4)理解并掌握有纯虚函数的抽象类的作用,在各派生类中重新定义各纯虚函数的方法,以及此时实现的动态多态性。二、实验环境(实验设备) 硬件: 微型计算机 软件: Microsoft Visual C+6.0三、实验原理及内容实验题目(1): 定义一个抽象类容器类Container,其中定义了若干纯虚函数,实现求表面积、体积、输出等功能。由此抽象类派生出正方体、球体和圆柱体等多个派生类,根据需要定义自己的成员变量,在各个派生类中重新定义各纯虚函数,实现各自类中相应功能,各个类成员的初始化均由本类构造函数实现。在主函数中,定义容器类的指针和各个派生类的对象,使指针指向不同对象处调用相同的函数能执行不同的函数代码,从而实现动态多态性。实验解答: 根据实验提示完成实验,完整的程序代码如下:#include<iostream>using namespace std;#define PI 3.14159class Containerprotected:double radius;public:Container(double r=0)radius=r;virtual void area()=0;virtual void volume()=0;virtual void print()=0;class Cube:public Containerprivate:double l;public:Cube(double x)l=x; virtual void area()cout<<"The container's area is:"<<6*l*l<<endl;virtual void volume()cout<<"The container's volume is:"<<l*l*l<<endl;virtual void print()cout<<"It is a cube!n"class Sphere:public Containerprivate:double r;public:Sphere(double y)r=y;virtual void area()cout<<"The container's area is:"<<4*PI*r*r<<endl;virtual void volume()cout<<"The container's volume is:"<<4/3*PI*r*r*r<<endl;virtual void print() cout<<"It is a sphere!n"class Cylinder:public Containerprivate:double r; double h;public:Cylinder(double r1,double h1) r=r1;h=h1;virtual void area() cout<<"The container's area is:"<<2*PI*r*r+2*PI*r*h<<endl;virtual void volume() cout<<"The container's volume is:"<<PI*r*r*h<<endl; virtual void print()cout<<"It is a cylinder!n" ;void main() Container *p;Cube Cu(4);Sphere Sp(4);Cylinder Cy(4,5);p=&Cu;p->area();p->volume();p->print(); p=&Sp;p->area();p->volume();p->print();p=&Cy;p->area();p->volume();p->print();实 验 报 告你在主函数中调用该函数时测试动态多态性所增加的语句是: P=&Cu; P=&Sp; P=&Cy;由两步,请在小结中总结关于动态多态性的实现方法。 在基类与派生类中存在的同名成员函数,定义时在形式参数的个数,顺序,类型方面有所不同,在程序编译时就能根据时机参数与形式参数的匹配情况,确定该类对象究竟调用了哪一个成员函数。主函数中定义一个Container类对象,请在小结中记录编译时的error和warning信息,从而得出什么结论?纯虚函数不能被调用,因为它只有函数名,而无具体实现代码,无法实现具体的功能。实 验 报 告实验题目(2): 定义复数类Complex,有实部、虚部两个私有成员变量,在该类中定义多个重载的构造函数、定义析构函数和输出函数print,复数的输出形如12-3i,在类中重载+、-、*、/、+(分前+和后+)。在主函数中定义复数类的对象,实现复数的各种算术运算,通过重载实现静态多态性。实验解答:根据实验提示完成实验,完整的程序代码如下:#include<iostream>using namespace std;class Complexprivate:float real;float imag;public:Complex(float r=0,float i=0)real=r;imag=i;void print()cout<<real<<"+"<<imag<<endl; Complex operator*(Complex c1);Complex operator/(Complex c1);Complex operator+(int);friend Complex operator+(const Complex &c1,const Complex &c2);friend Complex operator-(const Complex &c1,const Complex &c2);friend Complex operator+(Complex &c1);Complex Complex:operator*(Complex c1)/Complex c;real=real*c1.real;imag=imag*c1.imag;return *this;Complex Complex:operator/(Complex c1)/Complex c;real=real/c1.real;imag=imag/c1.imag;return *this;Complex Complex:operator+(int) / Complex c(*this);real+;imag+;return *this;Complex operator+(const Complex &c1,const Complex &c2)Complex c;c.real=c1.real+c2.real;c.imag=c1.imag+c2.imag;return c;Complex operator-(const Complex &c1,const Complex &c2)Complex c;c.real=c1.real-c2.real;c.imag=c1.imag-c2.imag;return c;Complex operator+(Complex &c1)+c1.real;+c1.imag;return c1;int main()Complex a1(2.3,4.6),a2(3.6,2.8); Complex a3,a4,a5,a6;a3=a1+a2;a4=a1-a2;a5=a1*a2;a6=a1/a2;cout<<"a1="a1.print();cout<<"a2="a2.print();cout<<"a3=a1+a2="a3.print();cout<<"a4=a1-a2="a4.print();cout<<"a5=a1*a2="a5.print();cout<<"a6=a1/a2="a6.print();a3=+a1;cout<<"after a3=+a1"cout<<"a1="a1.print();cout<<"a3="a3.print();a4=a2+;cout<<"after a4=a2+"cout<<"a2="a2.print();cout<<"a4="a4.print();return 0;实 验 报 告程序的运行结果是: A1=2.3+4.6 A2=3.6+2.8 A3=a1+a2=5.9+7.4 A4=a1-a2=-1.3+1.8 A5=a1*a2=8.28+12.88 A6=a1/a2=2.3+4.6 After a3=+a1 a1=3.3+5.6 A3=3.3+4.6 After a4=a2+ a2=4.6+3.8 A4=4.6+3.8将主函数中所有以隐式方式调用重载运算符的语句改写成等效的显式调用重载运算符的语句为:以隐式方式调用重载运算符的语句等效的显式调用重载运算符的语句A3=A1+A2;A3=operator+(a1,a2)A4=A1-A2;A4=operator-(a1

注意事项

本文(实验3-多态性)为本站会员(壹****1)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.