实验五 构造函数与析构函数.doc_第1页
实验五 构造函数与析构函数.doc_第2页
实验五 构造函数与析构函数.doc_第3页
实验五 构造函数与析构函数.doc_第4页
实验五 构造函数与析构函数.doc_第5页
全文预览已结束

下载本文档

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

文档简介

实验五 构造函数与析构函数一、实验类型 设计型二、实验目的1、实验目的(1) 掌握构造函数和析构函数的特点、功能以及函数的调用方法。(2) 分析和使用VC+的debug调试功能跟踪观察类的构造函数、析构函数的执行顺序。三、上机准备1、实验室安装VC+6.0软件。2、构造函数的定义和使用方法、析构函数的概念与作用。四、实验内容与步骤1、建立一个点(Point)类,设计构造函数和析构函数对类对象进行初始化和撤销操作。提示与分析:(1) 建立默认无参构造函数,初始化Point中的坐标成员(X,Y)为0,注意其函数名与类名相同。(2) 建立析构函数,在屏幕上显示析构函数执行信息。注意其函数名前的符号。(3) 建立重载构造函数,包含两个坐标参数x和y。(4) 建立拷贝构造函数,参数为Point类对象的引用。例如,Point(Point &p)X=p.getX();Y=p.getY();(5) 参考程序#includeclass Pointprivate:int X,Y;public:Point()/默认构造函数X=0;Y=0;coutconstructor called.n;Point(int x,int y)/重载构造函数X=x;Y=y;coutconstructor called.n;Point()/析构函数coutdestructor called.n;int getX()return X;int getY()return Y;void main()Point p1(5,7),p2;coutp1(p1.getX(),p1.getY()endl;(6) 思考对象p1如何被初始化的?改写以上程序通过定义拷贝构造函数,用对象p1初始化对象p2。在程序main()中加入语句coutp2.X;是否正确?为什么?2、定义一个CPU类,包含品牌(Brand)、频率(frequency)、电压(voltage)等私有数据成员,还有公有成员函数run()和stop()。其中,Brand为枚举类型CPU_Brand,frequency为整型数,voltage为浮点型,Type为字符数组。观察构造函数和析构函数的调用顺序。提示与分析:(1) 定义枚举类型enum CPU_BrandIntel=1,AMD; (2) 声明和定义CPU类,包含品牌(Brand)、频率(frequency)、电压(voltage)等私有数据成员。例如,private:int Brand;int frequency;float voltage;(3) 声明和定义公有成员函数run()、stop(),用来输出提示信息。例如,public:void run();void stop();(4) 声明和定义构造函数进行对象初始化。CPU(CPU_Brand brand,int fre,float vol);(5) 建立main()函数,在函数体中建立一个CPU类对象,并调用run和stop方法。例如,CPU cpu(Intel, 400,3.0);cpu.run();cpu.stop();(6) 调试操作步骤:1) 按下快捷键F11(Step Into)进入单步执行状态,程序开始运行,且光标停在main()函数的入口处。2) 按下快捷键F10(Step Over),光标下移,程序准备执行CPU对象的初始化。3) 按下快捷键F11,程序准备执行CPU类的构造函数。4) 连续按快捷键F10,观察构造函数。5) 此时程序准备执行CPU对象的run()函数,按下快捷键F11,程序进入run()成员函数,连续按快捷键F10,直到回到main()函数。6) 参照上述的方法继续执行程序,观察程序的执行顺序。(7)参考程序#includeenum CPU_Brand Intel=1,AMD;class CPUprivate:CPU_Brand brand;int frequency;float voltage;public:CPU(CPU_Brand bra,int fre,float vol)brand=bra;frequency=fre;voltage=vol;coutCreate a CPU.endl;CPU() coutdestory a CPU.endl;void run() coutcpu started running.endl; void stop() coutcpu has stopped running.endl; ;void main()CPU cpu(Intel,300,2.8);cpu.run();cpu.stop();(8) 思考:什么时候执行构造函数?什么时候执行析构函数?3、修改以下程序代码,使之输出结果为: 调用构造函数 10:20 调用复制构造函数 10:20 调用析构函数 调用析构函数(1)程序如下:#includeclass copyprivate:int x; int y;public:copy(int a, b)x=a;y=b;cout调用构造函数endl;copy(const copy c)x=c.x;y=c;cout调用复制构造函数endl;copy()cout调用析构函数endl;void print()coutx:yendl;void main()copy obj1(10,20);obj1.print();copy obj2;obj2.print();(2)提示与分析: 函数的每个参数都必须指明类型。例如,copy(int a,int b)在拷贝构造函数中,其参数为同类生成对象的引用。例如,copy(const copy &c)对象的使用主

温馨提示

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

评论

0/150

提交评论