C++面向对象实验报告.docx
- 文档编号:27228410
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:13
- 大小:17.57KB
C++面向对象实验报告.docx
《C++面向对象实验报告.docx》由会员分享,可在线阅读,更多相关《C++面向对象实验报告.docx(13页珍藏版)》请在冰豆网上搜索。
C++面向对象实验报告
C++面向对象_实验报告
实验1函数的设计与使用
一、实验目的
1、掌握C++中函数的语法格式及各部分的含义。
2、掌握函数参数列表的分析与设计方法。
3、掌握函数参数传递的三种方式。
4、掌握函数调试方法。
5、掌握函数调用方法。
二、实验任务
1、设计并应用一个函数,完成对用户输入的介于1-15之间的整数的阶乘的求取。
如5~=120。
2、设计并应用一个函数,完成对用户输入的任意整数进行中文大写数字形式的转换。
如12壹拾贰。
3、设计并应用一个函数,完成对用户输入的整数数组进行元素倒置。
如123倒置为321。
三、主要代码
四、实验总结
实验2数组与指针
一、实验目的
1、学习使用数组。
2、学习字符串数据的组织和处理。
3、掌握指针的使用方法。
4、练习通过debug观察指针的内容及其所指的对象的内容。
5、练习通过动态内存分配实现动态数组,并体会指针在其中的作用。
二、实验任务
1、测试3X3矩阵转置函数的程序,程序如下:
#include
usingnamespacestd;
voidmove(intmatrix[3][3]){
inti,j,k;
for(i=0;i<3;i++)
for(j=0;j
{
k=matrix[i][j];
matrix[i][j]=matrix[j][i];
matrix[j][i]=k;
}
}
intmain()
{
inti,j;
intdata[3][3];
cout<<"输入矩阵的元素"< for(i=0;i<3;i++) for(j=0;j<3;j++) { cout<<"第"< <<"个元素为: "; cin>>data[i][j]; } cout<<"输入的矩阵的为: "< for(i=0;i<3;i++) { for(j=0;j<3;j++) cout< cout< } move(data); cout<<"转置后的矩阵的为: "< for(i=0;i<3;i++) { for(j=0;j<3;j++) cout< cout< } } 2、使用动态内存分配生成动态数组来重新设计一个3X3矩阵转置函数,使用指针实现函数的功能。 3、编程实现两字符串的连接。 要求使用字符数组保存字符串,不要使用系统函数。 4、使用String类定义字符串对象,重新实现上一小题。 (选作)5、定义一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。 display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性。 实现并测试这个类。 (提示: 对字符数组的赋值可以使用字符串拷贝函数strcpy(char*,char*,name))。 (选作)6、定义包含个5元素的对象数组,每个元素都是Employee类型的对象。 实验3类与对象 实验目的 掌握类的声明和使用。 掌握类的声明和对象的声明。 复习具有不同访问属性的成员的访问方式。 观察构造函数和析构函数的执行过程。 学习类的组合使用方法。 使用VC++的debug调试功能观察程序流程,跟踪观察类的构造函数、析构函数、 成员函数的执行顺序。 实验任务 1声明一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。 其中,rank为枚举类型CPU_Rank,声明为enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数,voltage为浮点型的电压值。 观察构造函数和析构函数的调用顺序。 2声明一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,有两个公有成员函数run、stop。 cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。 3(选作)设计一个用于人事管理的People(人员)类。 考虑到通用性,这里只抽象出所有类型人员都具有的属性: number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等等。 其中“出生日期”声明为一个“日期”类内嵌子对象。 用成员函数实现对人员信息的录入和显示。 要求包括: 构造函数和析构函数、拷贝构造函数、内联成员函数、组合。 1、#include usingnamespacestd; enumCPU_Rank{p1=1,p2,p3,p4,p5,p6,p7}; classCPU {private: CPU_Rankrank; intfreauency; floatvoltage; public: CPU(CPU_Rankr,intf,floatv) {rank=r; freauency=f; voltage=v; cout<<"ThisisCPUconstructprogram"< ~CPU() {cout<<"ThisisCPUdestroyfunction"< voidrun(){cout<<"TheCPUisrunning"< voidstop(){cout<<"TheCPUisStopping"< }; intmain() { enumCPU_Rankrank; rank=p5; CPUcpu1(rank,1024,3.6); cpu1.run(); cpu1.stop(); return0; } 运行结果: ThisisCPUconstructprogram TheCPUisrunning TheCPUisStopping ThisisCPUdestroyfunction2、#include usingnamespacestd; enumCPU_Rank{p1=1,p2,p3,p4,p5,p6,p7}; classCPU {private: CPU_Rankrank; intfreauency; floatvoltage; public: CPU(CPU_Rankr=p1,intf=0,floatv=0) {rank=r; freauency=f; voltage=v; cout<<"ThisisCPUconstructprogram"< ~CPU() {cout<<"ThisisCPUdestroyfunction"< voidrun(){cout<<"TheCPUisrunning"< voidstop(){cout<<"TheCPUisStopping"< }; classRAM {private: intrank; intsize; public: RAM(intr=0,ints=0) {rank=r; size=s;} voidrun(){cout<<"TheRAMisrunning"< voidstop(){cout<<"TheRAMisStopping"< }; classCDROM {private: intrank; intsize; public: CDROM(intr=0,ints=0) {rank=r; size=s;} voidrun(){cout<<"TheCDROMisrunning"< voidstop(){cout<<"TheCDROMisStopping"< }; classComputer { private: CPUcpu; RAMram; CDROMcdrom; public: Computer(CPUc,RAMr,CDROMcd) {cout<<"ThisistheComputerConstruct"< cpu=c; ram=r; cdrom=cd;} voidrun() {cout<<"ThisisComputerisrunning"< cpu.run(); ram.run();} voidstop() {cout<<"ThisisComputerisstop"< cpu.stop(); ram.stop();} }; intmain() {enumCPU_Rankrank; rank=p5; CPUcpu1(rank,1024,3.6f); RAMram(5,1024); CDROMcdrom(5,1024); Computercp(cpu1,ram,cdrom); cp.run(); cp.stop(); return0; } 实验4继承与派生 一、实验目的 1学习定义和使用类的继承关系,定义派生类。 2熟悉不同继承方式下对基类成员的访问控制。 3学习利用虚基类解决二义性问题。 二、实验任务 1定义一个基类Animal,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(intn)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗,编程试试看。 2定义一个基类BaseClass,有整型成员变量Number,构造其派生类DerivedClass,观察构造函数和析构函数的执行情况。 3定义一个车(vehicle)基类,具有MaxSpeed、Weight等成员变量,Run,Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,自行车类具有高度(Height)等属性,汽车类有座位数(SeatNum)等属性。 从bicycle和motorcar类派生出摩托车(motorcycle)类,在继承过程中,注意把vehicle设置为虚基类。 如果不把设置为虚基类,会有什么问题,编程试试看。 实验结果: 1errorC2248: 'age': cannotaccessprivatememberdeclaredinclass'Animal' 改正方案: 将Animal类中私有成员age换成公共成员。 2构造基类对象! 构造派生类对象! 析构派生类对象! 析构基类对象! Nowitisrunning! Nowithasstopped! //如果vehicle不是虚基类,有错误: errorC2385: 'motorcycle: : Run'isambiguous …… 源程序: 1、#include usingnamespacestd; classAnimal { private: intage; public: Animal(){}; ~Animal(){}; }; classDog: privateAnimal { public: Dog(){}; ~Dog(){}; voidSetAge(intn){age=n;}}; intmain() { Doga; a.SetAge(10); return0; } 2、#include usingnamespacestd; classBaseClass { public: BaseClass(){cout<<"构造基类对象! "< ~BaseClass(){cout<<"析构基类对象! "< classDerivedClass: publicBaseClass { public: DerivedClass(){cout<<"构造派生类对象! "< ~DerivedClass(){cout<<"析构派生类对象! "< intmain() { DerivedClassd; } 3、nclude usingnamespacestd; classvehicle { private: intMaxSpeed; intWeight; public: vehicle(){MaxSpeed=0;Weight=0;}; ~vehicle(){}; voidRun(){cout<<"Nowitisrunning! "< voidStop(){cout<<"Nowithasstopped! "< }; classbicycle: virtualpublicvehicle { private: intHeight; public: bicycle(){}; ~bicycle(){};}; classmotorcar: virtualpublicvehicle { private: intSeatNum;public: motorcar(){}; ~motorcar(){};}; classmotorcycle: publicbicycle,publicmotorcar { public: motorcycle(){}; ~motorcycle(){};}; intmain() { motorcyclea; a.Run(); a.Stop(); } 实验5运算符重载 一、实验目的 1、掌握C++中运算符重载的含义。 2、掌握运算符重载的一般语法。 3、能重载+、-、*、/、%等运算符。 4、能重载<<、>>、=等运算符。 二、实验任务 1、分析、设计并实现一个整数类,可以对上述运算符进行重载。 2、在主函数中设计代码调用重载的运算符完成相应功能。 三、主要代码 四、实验总结
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 面向 对象 实验 报告