1、C+程序设计实验二报告C+程序设计(B)课程实验报告姓 名: 满恂钰 班 级 学 号: 通信2班 2016080331040 学 院: 智慧城市学院 专 业: 通信工程 指 导 教 师: 肖明明 2018年05月14日实验二 类和对象上课时间:2018.5.14 地点:实验楼0709一 实验目的1掌握类的声明和使用。 2掌握对象的声明。 3复习具有不同访问属性的成员的访问方式。 4观察构造函数和析构函数的执行过程。 5学习类的组合使用方法。二 实验内容1、实验内容1 声明一个 CPU 类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数 run
2、 、stop。其中,rank 为枚举类型 CPU-Rank,声明为enum CPU-RankP1=1,P2,P3,P4,P5,P6,P7;frequency为单位是MHz的整型数,voltage为浮点型的电压值。观察构造函数和析构函数的调用顺序。【源程序】#include using namespace std;enum CPU_RankP1=1,P2,P3,P4,P5,P6,P7;class CPU private: CPU_Rank rank; int frequency; float voltage; public: CPU(int ra,int fre,float vol) rank=
3、(CPU_Rank)ra; frequency=fre; voltage=vol; cout等级:enum(P7)endl; cout频率:freendl; cout电压:volendl; cout构造了一个CPU!endl; CPU() cout析构了一个CPU!endl; void Run() coutCPU is runing!endl; void Stop() coutCPU is stop!endl; ;int main() CPU a(2,30,220); a.Run(); a.Stop();【结果及分析】(1)实验结果截图(2)实验结果分析:掌握了类的声明和使用以及对象的声明,初
4、步明白了析构函数和构造函数的调用顺序,实验通过。【错误及解决办法】 错误:cout等级:enum(P7)endl;经检查该语句中enum后使用了(P7),则之后的CPU a(2,30,220);中2就没有意义。 解决方法:把enum(P7)替换成ra即可。2、实验内容2声明一个简单的 Computer 类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等,有两个公有成员函数 run 和 stop。Cpu 为 CPU 类的一个对象,ram 为RAM 类的一个对象,cdrom 为 CDROM 类的一个对象,声明并实现这个类。【源程序】#include using namespace
5、std;enum CPU_RankP1=1,P2,P3,P4,P5,P6,P7;class CPU private: CPU_Rank rank; int Cpu; public: CPU()cout构造了一个CPU!endl; CPU()cout析构了一个CPU!endl; void Run()coutCPU is runing!endl; void Stop()coutCPU is stop!endl;class RAM private: int ram; public: RAM()cout构造了一个ram!endl; RAM()cout析构了一个ram!endl; void Run()c
6、outram开始运行!endl; void stop()coutram停止运行!endl;class CDROM private: int cdrom; public: CDROM()cout构造了一个cdrom!endl; CDROM()cout析构了一个cdrom!endl; void Run()coutcdrom开始运行!endl; void stop()coutcdrom停止运行!endl;class COMPUTER private: CPU Cpu; RAM ram; CDROM cdrom; public: COMPUTER()cout构造了一个computer!endl; CO
7、MPUTER()cout析构了一个computer!endl; void Run()coutcomputer开始运行endl; void Stop()coutcomputer停止运行endl;int main() COMPUTER a; a.Run(); a.Stop(); return 0;【结果及分析】(1)实验结果截图(2)实验结果分析:调用析构函数的次序正好与调用构造函数的次序相反:最先被调用的构造函数,其对应的析构函数最后被调用。例如图中CPU。而最后被调用的构造函数,其对应的析构函数最先被调用。规律:先构造的后析构,后构造的先析构,实验通过。【错误及解决办法】错误:一开始一个类里面
8、构造了过多的参数,导致程序杂乱并且不能很好的使用参数导致程序编译时出现许多错误。解决方法:删除了没有意义的参数,只留下了cout输出语句,使程序运行时打印出来的结果清晰明了。3、实验内容3设计一个用于人事管理的 People(人员)类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等等。其中出生日期定义为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、复制构造函数、内联成员函数、带缺省形参值的成员函数、聚集。【源程序】#include #include usi
9、ng namespace std;class data private: int year; int month; int day; public: data()cout构造了一个日期!endl; data()cout析构了一个日期!endl; void setdata(int Y,int M,int D) year = Y; month = M; day = D; void display() coutyear年month月day日; ;class people private: int number; char sex; data birthday; char id18; public:
10、people()cout构造了一个人的信息!endl; people()cout析构了一个人的信息!endl; setpeople(int Nu,char sex,char id18):birthday(year,month,day) number = Nu; sex = sex; birthday = bir; strcpy(id,id); cout编号:Nuendl; cout性别:sexendl; cout生日:birendl; cout身份证:idendl; ;int main() data b; b.setdata(1998,07,27); b.display(); people p
11、1; p1.setpeople(40,m,07.27,530322); return 0 ;【结果及分析】(1)实验结果截图程序编译出现8个错误。运行未通过。(2)错误分析:组合类构造函数以及复制构造函数知识点不清晰,不能正确应用。【错误及解决办法】 错误:1、未编写复制构造函数。2、未编写组合类构造函数。 解决方法:1、复制构造函数语句:Date(Date &birthday) /Date的复制构造函数的实现 year=birthday.year; month=birthday.month; day=birthday.day; 2、组合构造函数语句: People:People(int n,
12、string s,int i,Date b):number(n),sex(s),id(i),birthday(b) 三 实验总结1成功编写了实验内容要求一和二的程序、编译并调试通过。 2. 实验报告按照“实验报告模板”书写,思路清晰,格式规范。 3实验报告中写清了姓名、学号、实验时间地点、实验题目、实验目的、实验内容及实验过程。 4有实验结果分析。报告中应含源代码,打印出了运行结果;未调试通过或结果不正确的程序,分析了原因。 5. 实验报告中记录编程过程中出现的错误与改正方法。 6. 通过这三个小实验的编写,使我知道了关于这一章节我还有哪些知识点还有待加强,以及在编程速度上略微缓慢(单词的不熟、打字速度慢)。对于实验2,虽然没有参数看起来更清晰明了,但有了参数可以更直观的了解析构函数和构造函数内部语句的调用顺序以及是否被调用,因此,我认为应当在其加入一些参数。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1