C++实验十一虚函数.doc_第1页
C++实验十一虚函数.doc_第2页
C++实验十一虚函数.doc_第3页
C++实验十一虚函数.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验十一 虚函数一、实验目的1)掌握虚函数的定义和使用2)掌握抽象类的定义和使用3)掌握纯虚函数的定义4)掌握虚析构函数、纯虚函数和抽象类的作用二、实验原理1利用虚函数的作用:当编译器编译虚函数时,编译系统将用动态连接的方式进行编译。即在编译时不确定该虚函数的版本,而是利用一种机制在运动过程中根据其所指向的实例决定使用哪一个函数版本。2利用虚析构函数的原则:当将基类指针或引用new运算符指向派生类对象时,为了在释放派生类对象时能调用派生类的析构函数,必须将基类的析构函数定义为虚函数。3抽象类的作用:为它的所有派生类提供一个公共接口,纯虚函数是定义抽象类的一种间接手段。三、实验设备实验室里调备的计算机、window xp,visual c+6.0四、实验内容41分析下面各题程序,按各题的要求进行实验1)分析下面的程序,指出程序运行的结果:#includeclass CBasepublic:virtual void f1() /将成员函数f1()声明为虚函数cout调用函数CBase:f1()!endl; virtual void f2() /将成员函数f2()声明为虚函数cout调用函数CBase:f2()!endl; void f3() /一般成员函数cout调用函数CBase:f3()!endl;class CDerived:public CBase /公有继承CBasevoid f1()cout调用函数CDerived:f1()!endl;void f2()cout调用函数CDerived:f2()!endl;void f3()cout调用函数CDerived:f3()!f1(); /通过p调用基类版本的f1()函数p-f2();/通过p调用基类版本的f2()函数p-f3();/通过p调用基类版本的f3()函数p=&obj2;/将派生类对象obj2的地址赋给pp-f1(); /动态连接,调用派生类版本p-f2();/动态连接,调用派生类版本p-f3();/调用基类版本运行的结果:2)分析下面的程序,指出程序运行的结果:#includeclass CBasepublic:CBase() /CBase类的构造函数cout调用构造函数CBase()!endl;fun(); /构造函数中调用虚函数fun()virtual void fun() /定义虚函数cout调用构造函数CBase:fun()!endl;class CDerived:public CBasepublic:CDerived() /CDerived类的构造函数cout调用构造函数CDerived()!endl;fun(); /构造函数中调用虚函数fun()void fun()cout调用构造函数CDerived:fun()!endl;void main()CDerived d; /创建对象d.fun();运行结果:3)分析下面的程序,指出程序的错误#include#includeclass CBaseprotected:char *ch;public:CBase(char *x)ch=new char20;strcpy(ch,x);virtual void fun()=0; virtual void fun1() /虚函数coutxendl;coutchendl;CBase()deletech; coutCBase()endl;class CDerived:public CBaseprotected: char *ch;public:CDerived (char *x,char*y):CBase(y)ch=new char20;strcpy(ch,x);void fun1()/coutxendl;coutchendl;Virtual CDerived() deletech; coutCDerived()fun1();p-fun();p=new CDerived(China,Hello);p-fun1();p-fun(); delete p;运行结果:42编写并调试程序1)编写一个程序计算三角,正方形和圆形的面积。分析:依题意,可以抽象出一个基类CBase,在其中说明一个虚函数,用来求面积,并利用单接口、多实现版本设计各个图形求面积的方法。(参考教材p209 5.25)源程序:运行结果:2)编写一个程序计算正方体、球体和圆柱体的表面积和体积。分析:依题意,抽象出一个公共基类CContaineer为抽象类,在其中定义求表面积和体积的虚函数(该抽象类本身没有表面积和体积可言)。抽象类中定义一个公共的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论