C实验三 构造函数和析构函数题目 答案_第1页
C实验三 构造函数和析构函数题目 答案_第2页
C实验三 构造函数和析构函数题目 答案_第3页
C实验三 构造函数和析构函数题目 答案_第4页
C实验三 构造函数和析构函数题目 答案_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、实验三 构造函数和析构函数班级:B135A2 学号: 201322688 姓名: 杨弘 成绩: 一 实验目的1理解构造函数和析构函数作用;2掌握各种类型的构造函数和析构函数的使用;3掌握构造函数和析构函数的调用顺序。二 使用的设备和仪器计算机+Windows XP +Visual C+6.0三 实验内容及要求1阅读程序,写出运行结果,然后上机运行,将机器运行结果与人工运行的结果进行比较,并对每一行输出做出分析。(1)#include using namespace std;class MyClasspublic:MyClass(;MyClass(int xx;MyClass(int xx,in

2、t yy;MyClass(MyClass &void Display(;void Set(int, int; MyClass(;private:int x,y;MyClass: MyClass( cout<<"执行无参构造函数:" ;x=0;y=0;cout<<"x="< MyClass: MyClass(int xx cout<<"执行一个参数构造函数:" ;x=xx;y=0;cout<<"x="< MyClass: MyClass(int xx

3、,int yy cout<<"执行两个参数构造函数:" ;x=xx;y=yy;cout<<"x="< MyClass: MyClass(MyClass &a cout<<"执行复制构造函数:" ;x=a.x;y=a.y;cout<<"x="< void MyClass: Display( cout<<"执行显示函数:" ;cout<<"x="< void MyClass: Set

4、(int xx=0,int yy=0 cout<<"执行设置函数:" ;x=xx;y=yy;cout<<"x="< MyClass: MyClass ( cout<<"执行析构函数:" ;cout<<"x="< void main(MyClass a(12,34;a.Set(20;a.Display(;MyClass b(a;b.Display(;MyClass c;MyClass d(222;MyClass e(788,453;d.Display(;c.

5、Display(;(2)#include using namespace std;class Apublic:A(int x=100,double y=1.2a=x;b=y;void show(char *pt cout< cout<<"a="< cout<<"b="< private:int a;double b;void main(A obj1,obj2(100,3.5;obj1.show("obj1"obj2.show("obj2"A *p;p=&obj1;p

6、->show("p->obj1"(*p.show("(*pobj1"p=&obj2;p->show("p->obj2"(*p.show("(*pobj2"p=new A;p->show("p->new"delete p;(3)#include > using namespace std;class Complexpublic:Complex(;Complex (double x, double y;Complex (Complex & c

7、; Complex (;double GetRel( return rel;double GetImg( return img;private:double rel, img;Complex:Complex( rel=0; img=0;cout<<"缺省构造函数被调用: " cout<<"("< Complex:Complex(double x, double y rel=x; img=y;cout<<"构造函数被调用: ("< Complex:Complex(Complex &

8、 c rel = c.rel;img = c.img;cout<<"复制构造函数被调用: "cout<<"("< Complex: Complex ( cout<<"析构函数被调用: ("< /函数定义Complex fun(Complex c cout<<"在函数 fun(中."< double x, y;x=c.GetRel(*10;y=c.GetImg(+100;Complex temp(x, y;return temp;void main(C

9、omplex c1(6.8, 98.23,c2;c2=fun(c1;cout<<"c2=("< cout< 2在实验二第2题中使用构造函数和对象数组,完成多个歌手的报名、显示、查询和修改等功能。3定义数组类,并定义该类对象实现各种操作。Ø 数组的属性:长度、元素Ø 数组基本操作:添加、查询、删除、排序、插入功能。 Ø 参考的程序框架:const int MaxSize=10;class Array_intprivate:int length; int dataMaxSize;public:Array_int(;/相当于初

10、始化操作,一个空数组,长度为0Array_int(int a,int n;/用给定的长度为n的数组a初始化数据成员void Display(;/显示所有数组元素void Insert(int x;/将给定的元素x插入到数组中后,仍保持数组的有序性;需要判断插入新元素会不会发生存储空间的溢出情况,若发生溢出提示插入操作失败;插入过程中,插入位置确定后,从插入位置至最后一个元素全部往后移一位,给新插入元素空出插入位置。void Delete(int x;/从数组中删除指定元素x,后面的元素全部要往前移一位;做删除前需要判断数组是否为空,若为空表,则删除操作失败int Search(int x;/从

11、数组中查找指定元素x,若查找成功返回元素在数组中位置,查找失败返回特定值-1;四 实验步骤编写程序+编译+连接+运行+分析结果/*2在实验二第2题中使用构造函数和对象数组,完成多个歌手的报名、显示、查询和修改等功能。*/*定义一个中国好声音歌手类。其中包括每个歌手的名字、年龄、来自哪个省份、所唱的曲目等。可以实现报名、显示、修改等功能。*/#include #include #include #include #define N 3using namespace std;class Singerprivate:string Name;int Age;string Province;string

12、 Song;public:Singer(cout<<"调用Singer构造函数。"< Singer(cout<<"调用Singer析构函数。"< void Input(cout<<"请输入歌手的信息(姓名、年龄、省份、演唱曲目):"cin>>Name>>Age>>Province>>Song;void Display(cout<<"姓名"< 年龄 "< 省份 "< 演唱曲

13、目 "< cout< void Modify(int a,two;string one,three,four;cout< cout<<"1.姓名 2.年龄 3.省份 4.演唱曲目"< cout<<"请选择修改的选项:"cin>>a;switch(acase 1:cout<<"请输入新的姓名:"cin>>one;Name=one;break;case 2:cout<<"请输入新的年龄:"cin>>tw

14、o;Age=two;break;case 3:cout<<"请输入新的省份:"cin>>three;Province=three;break;case 4:cout<<"请输入新的演唱曲目:"cin>>four;Song=four;break;cout<<"操作成功!"int main(int i,choose;Singer sN;cout<<"对"< 位选手进行报名: "< for(i=0;i si.Input(;cou

15、t< cout<<"对信息进行显示:"< for(i=0;i si.Display(;cout< while(1cout<<"是否需要进行信息修改(1.是 2.否):"cin>>choose;if(choose=1cout<<"请输入需要修改的选手序号:"cin>>i;si.Modify(;elsecout<<"结束了."< return 0;system("pause"return 0;/*3定义数

16、组类,并定义该类对象实现各种操作。? 数组的属性:长度、元素? 数组基本操作:添加、查询、删除、排序、插入功能。 ? 参考的程序框架:const int MaxSize=10;class Array_intprivate:int length; int dataMaxSize;public:Array_int(;/相当于初始化操作,一个空数组,长度为0Array_int(int a,int n;/用给定的长度为n的数组a初始化数据成员void Display(;/显示所有数组元素void Insert(int x;/将给定的元素x插入到数组中后,仍保持数组的有序性;需要判断插入新元素会不会发生

17、存储空间的溢出情况,若发生溢出提示插入操作失败;插入过程中,插入位置确定后,从插入位置至最后一个元素全部往后移一位,给新插入元素空出插入位置。void Delete(int x;/从数组中删除指定元素x,后面的元素全部要往前移一位;做删除前需要判断数组是否为空,若为空表,则删除操作失败int Search(int x;/从数组中查找指定元素x,若查找成功返回元素在数组中位置,查找失败返回特定值-1;*/#include #include #include using namespace std;const int MaxSize=10;class Array_intprivate:int le

18、ngth; int dataMaxSize;public:Array_int(;/相当于初始化操作,一个空数组,长度为0Array_int(int a,int n;/用给定的长度为n的数组a初始化数据成员void Display(;/显示所有数组元素void Sort(;/对数组所有元素进行排序void Insert(int x;/将给定的元素x插入到数组中后,仍保持数组的有序性;需要判断插入新元素会不会发生存储空间的溢出情况,/若发生溢出提示插入操作失败;插入过程中,插入位置确定后,从插入位置至最后一个元素全部往后移一位,给新插入元素空出插入位置。void Delete(int x;/从数组

19、中删除指定元素x,后面的元素全部要往前移一位;做删除前需要判断数组是否为空,若为空表,则删除操作失败int Search(int x;/从数组中查找指定元素x,若查找成功返回元素在数组中位置,查找失败返回特定值-1;int main(int choose,x,y,z,laction,i,n,a10;cout<<"请输入数组长度(<10):"cin>>n;cout<<"请依次输入整数:"for(i=0;i cin>>ai;Array_int a_group(a,n;while(1cout<<

20、"*"< cout<<"*1.显示 2.降序排序 3.插入 4.删除 5.查找*"< cout<<"*"< cout<<"请选择操作项:"< cin>>choose;switch(choosecase 1:cout<<" 显示 "< a_group.Display(;break;case 2:cout<<" 排序 "< a_group.Sort(;break;case

21、3:cout<<" 插入 "< cout<<"请输入插入的一个整型数:"cin>>x;a_group.Insert(x;break;case 4:cout<<" 删除 "< cout<<"请输入需要删除的数字:"cin>>y;a_group.Delete(y;break;case 5:cout<<" 查找 "< cout<<"请输入需要查找的数字:"cin>

22、>z;laction=a_group.Search(z;if(laction!=-1cout<<"此数字的位置是 "< elsecout<<"查找失败!"< break;return 0;Array_int:Array_int(length=0;Array_int:Array_int(int a,int ncout<<"调用构造函数:"< int i;length=n;for(i=0;i datai=ai;int Array_int:Search(int x int i;for(i=0;i if(x=data

温馨提示

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

评论

0/150

提交评论