《C++程序设计》实验二报告Word文件下载.docx
- 文档编号:15936939
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:9
- 大小:170.82KB
《C++程序设计》实验二报告Word文件下载.docx
《《C++程序设计》实验二报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《《C++程序设计》实验二报告Word文件下载.docx(9页珍藏版)》请在冰豆网上搜索。
3.复习具有不同访问属性的成员的访问方式。
4.观察构造函数和析构函数的执行过程。
5.学习类的组合使用方法。
二实验内容
1、实验内容1
声明一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。
其中,rank为枚举类型CPU-Rank,声明为enumCPU-Rank{P1=1,P2,P3,P4,P5,P6,P7};
frequency为单位是MHz的整型数,voltage为浮点型的电压值。
观察构造函数和析构函数的调用顺序。
【源程序】
#include<
iostream>
usingnamespacestd;
enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};
classCPU
{
private:
CPU_Rankrank;
intfrequency;
floatvoltage;
public:
CPU(intra,intfre,floatvol)
{
rank=(CPU_Rank)ra;
frequency=fre;
voltage=vol;
cout<
<
"
等级:
enum(P7)<
endl;
频率:
fre<
电压:
vol<
构造了一个CPU!
}
~CPU()
析构了一个CPU!
voidRun()
CPUisruning!
voidStop()
CPUisstop!
};
intmain()
CPUa(2,30,220);
a.Run();
a.Stop();
}
【结果及分析】
(1)实验结果截图
(2)实验结果分析:
掌握了类的声明和使用以及对象的声明,初步明白了析构函数和构造函数的调用顺序,实验通过。
【错误及解决办法】
错误:
cout<
经检查该语句中enum后使用了(P7),则之后的CPUa(2,30,220);
中2就没有意义。
解决方法:
把enum(P7)替换成ra即可。
2、实验内容2
声明一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等,有两个公有成员函数run和stop。
Cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。
intCpu;
CPU(){cout<
~CPU(){cout<
voidRun(){cout<
voidStop(){cout<
classRAM
intram;
RAM(){cout<
构造了一个ram!
~RAM(){cout<
析构了一个ram!
voidRun(){cout<
ram开始运行!
voidstop(){cout<
ram停止运行!
classCDROM
intcdrom;
CDROM(){cout<
构造了一个cdrom!
~CDROM(){cout<
析构了一个cdrom!
cdrom开始运行!
voidstop(){cout<
cdrom停止运行!
classCOMPUTER
CPUCpu;
RAMram;
CDROMcdrom;
COMPUTER(){cout<
构造了一个computer!
~COMPUTER(){cout<
析构了一个computer!
computer开始运行"
computer停止运行"
intmain(){
COMPUTERa;
return0;
调用析构函数的次序正好与调用构造函数的次序相反:
最先被调用的构造函数,其对应的析构函数最后被调用。
例如图中CPU。
而最后被调用的构造函数,其对应的析构函数最先被调用。
规律:
先构造的后析构,后构造的先析构,实验通过。
错误:
一开始一个类里面构造了过多的参数,导致程序杂乱并且不能很好的使用参数导致程序编译时出现许多错误。
解决方法:
删除了没有意义的参数,只留下了cout输出语句,使程序运行时打印出来的结果清晰明了。
3、实验内容3
设计一个用于人事管理的People(人员)类。
考虑到通用性,这里只抽象出所有类型人员都具有的属性:
number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等等。
其中"
出生日期"
定义为一个“日期”类内嵌子对象。
用成员函数实现对人员信息的录入和显示。
要求包括:
构造函数和析构函数、复制构造函数、内联成员函数、带缺省形参值的成员函数、聚集。
string>
classdata
intyear;
intmonth;
intday;
data(){cout<
构造了一个日期!
~data(){cout<
析构了一个日期!
voidsetdata(intY,intM,intD)
year=Y;
month=M;
day=D;
voiddisplay()
{
year<
年"
month<
月"
day<
日"
;
}
classpeople
intnumber;
charsex;
databirthday;
charid[18];
people(){cout<
构造了一个人的信息!
~people(){cout<
析构了一个人的信息!
setpeople(intNu,charsex,charid[18]):
birthday(year,month,day)
number=Nu;
sex=sex;
birthday=bir;
strcpy(id,id);
编号:
Nu<
性别:
sex<
生日:
bir<
身份证:
id<
datab;
b.setdata(1998,07,27);
b.display();
peoplep1;
p1.setpeople(40,"
m"
07.27,530322);
return0;
程序编译出现8个错误。
运行未通过。
(2)错误分析:
组合类构造函数以及复制构造函数知识点不清晰,不能正确应用。
1、未编写复制构造函数。
2、未编写组合类构造函数。
1、复制构造函数语句:
Date(Date&
birthday){//Date的复制构造函数的实现
year=birthday.year;
month=birthday.month;
day=birthday.day;
}
2、组合构造函数语句:
People:
:
People(intn,strings,inti,Dateb):
number(n),sex(s),id(i),birthday(b){}
三实验总结
1.成功编写了实验内容要求一和二的程序、编译并调试通过。
2.实验报告按照“实验报告模板”书写,思路清晰,格式规范。
3.实验报告中写清了姓名、学号、实验时间地点、实验题目、实验目的、实验内容及实验过程。
4.有实验结果分析。
报告中应含源代码,打印出了运行结果;
未调试通过或结果不正确的程序,分析了原因。
5.实验报告中记录编程过程中出现的错误与改正方法。
6.通过这三个小实验的编写,使我知道了关于这一章节我还有哪些知识点还有待加强,以及在编程速度上略微缓慢(单词的不熟、打字速度慢)。
对于实验2,虽然没有参数看起来更清晰明了,但有了参数可以更直观的了解析构函数和构造函数内部语句的调用顺序以及是否被调用,因此,我认为应当在其加入一些参数。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+程序设计 C+ 程序设计 实验 报告