实验二类与对象.docx
- 文档编号:12697598
- 上传时间:2023-04-21
- 格式:DOCX
- 页数:13
- 大小:60.05KB
实验二类与对象.docx
《实验二类与对象.docx》由会员分享,可在线阅读,更多相关《实验二类与对象.docx(13页珍藏版)》请在冰豆网上搜索。
实验二类与对象
武汉科技大学
C++上机实验报告
实验名称:
实验二类与对象
专业班级:
姓名:
学号:
日期:
2015年12月12日
一、实验目的
1.掌握类的声明与使用
2.掌握成员函数的使用方法
二、实验内容
1.构建一个类,含有三个数据成员,分别表示盒子的三条边长;含有一个成员函数,用来计算盒子的体积。
2.声明一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及chang_name()和display()等函数。
display()显示姓名、街道地址、城市和邮编等属性,chang_name()改变对象的姓名属性,实现并测试这个类。
3.设计一个用于人事管理的People(人员)类。
考虑到通用性,这里只抽象出所有类型人员都具有的属性:
number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等等。
其中“出生日期”声明为一个“日期”类内嵌子对象。
用成员函数实现对人员信息的录入和显示。
要求包括:
构造函数、析构函数、拷贝构造函数、内联成员函数等。
三、实验注意事项
程序中,需要编写一个可执行函数与main主调函数,自主设计输入、输出值,使得结果可以由控制台显示输出。
四、实验程序代码
(一)盒子程序:
#include
usingnamespacestd;
classbox//盒子类
{
public:
classbox(floata,floatb,floatc)//内联构造函数
{
length=a;
width=b;
hight=c;
}
floatvolume()//内联成员函数
{
returnlength*width*hight;
}
private:
floatlength,width,hight;//长宽高
};
intmain()//主调函数
{
floatdata[3];
while
(1)
{
cout<<"***************\n请输入盒子的\n\n长度:
"< cin>>data[0]; cout<<"宽度: "< cin>>data[1]; cout<<"高度: "< cin>>data[2]; boxB(data[0],data[1],data[2]);//构建盒子类对象B并初始化 cout<<"盒子的体积为: "< } return0; } (二)Employee类的构造和实现: #include #include usingnamespacestd; classemployee { public: employee(stringna,stringnum,intpos,stringcty,stringadd)//内联构造函数 { name=na; number=num; postcode=pos; city=cty; address=add; } intchange_name(void)//内联成员函数 { cout<<"请重新输入姓名: "< cin>>name; return0; } intchange_number(void)//内联成员函数 { cout<<"请重新输入编号: "< cin>>number; return0; } intchange_postcode(void)//内联成员函数 { cout<<"请重新输入邮编: "< cin>>postcode; return0; } intchange_city(void)//内联成员函数 { cout<<"请重新输入城市: "< cin>>city; return0; } intchange_address(void)//内联成员函数 { cout<<"请重新输入地址: "< cin>>address; return0; } intdisplay(void);//由于函数体较大,使用普通成员函数的构造方法 private: stringname,city,address,number;//类的数据成员 intpostcode; }; intemployee: : display(void)//成员函数的构建 { cout<<"******************\n姓名: "< "< "< "< "< return0; } intmain(void) { employeeP1("黄楷","4083",430000,"武汉","武汉科技大学青山校区"); P1.display(); P1.change_name(); P1.display(); P1.change_number(); P1.display(); P1.change_postcode(); P1.display(); P1.change_city(); P1.display(); P1.change_address(); P1.display(); return0; } (三)People类录入程序: #include #include usingnamespacestd; enumSEX{man,woman};//性别属性为枚举类型 classDate { public: Date(unsignedintdy,unsignedintmon,unsignedintyr)//内联构造函数 { day=dy; month=mon; year=yr; } Date()//默认构造函数 { day=0; month=0; year=0; } Date(Date&d) { day=d.day; month=d.month; year=d.year; } intshow(void)//内联成员函数 { cout< return0; } ~Date(){}//析构函数 private: unsignedintday,month,year; }; classPeople { public: People(stringna,stringnum,SEXsx,Datebirth,stringid_num);//构造函数 People(People&p); intshow(void); ~People(){} private: stringname,number,id;//类的数据成员 Datebirthday;//内嵌对象生日 SEXsex;//性别 }; People: : People(stringna,stringnum,SEXsx,Datebirth,stringid_num): birthday(birth)//组合类构造函数 { name=na; number=num; sex=sx; id=id_num; } People: : People(People&p): birthday(p.birthday)//组合类复制构造函数 { name=p.name; number=p.number; sex=p.sex; id=p.id; } intPeople: : show(void) { stringtemp; if(sex==man)temp="男"; elsetemp="女"; cout<<"************************\n姓名: "< "< "< "; birthday.show(); cout<<"身份证号: "< return0; } intmain(void) { stringname,number,id,tem; unsignedintday,month,year,check=0; charchoice; SEXsex; cout<<"请输入姓名: "< cin>>name; cout<<"请输入编号: "< cin>>number; cout<<"性别: A.男B.女"< while(! check) { cin>>choice; switch(choice) { case'A': case'a': sex=man;check=1;break; case'B': case'b': sex=woman;check=1;break; default: check=0;cout<<"输入错误请重输: "< } } cout<<"出生年: "; cin>>year; cout<<"月: "; cin>>month; cout<<"日: "; cin>>day; cout<<"身份证号: "< cin>>id; Dated(day,month,year); Peoplep(name,number,sex,d,id); p.show(); return0; } 五、实验运行结果 (一)盒子程序: (二)Employee类的实现: (三)People类的录入程序: 六、实验心得与体会 通过这次试验我更加熟练的掌握了类的定义和构造。 成员函数可以隐式内联,可以显示内联,构造函数同理。 并且在成员函数体较大时,为了不增加冗余,应当不适用内联,以减小代码大小。 而实验三所习最多: 1.枚举类型的用法,enum类名{类值}; 2.拷贝构造函数的定义语法 类名(类名&引用名){成员名=引用名.成员名;…} 3.析构函数~类名(){} 4.组合类的定义 组合类构造函数的声明 类名(普通形参…内嵌对象形参…): 内嵌对象(内嵌对象的形参…),… 组合类拷贝构造函数的声明 类名(类名&引用名): 内嵌对象(引用名.内嵌对象) {普通成员=引用名.普通成员名;…} 组合类默认构造函数的声明 类名(){成员=默认值;…} 5.构造函数的调用 a.内嵌对象的构造函数调用按在组合类定义中出现的顺序,且先调用内嵌对象的构造函数,再实现组合类构造函数函数体; b.内嵌对象没有出现在初始化列表中,用内嵌对象的默认构造函数; c.系统自动生成的隐含默认构造函数在初始化时起到作用; d.没有默认构造函数的成员对象和引用型变量必须初始化; 6.析构函数调用顺序正好与构造函数相反 7.组合类对象初始化时会调用两次内嵌对象的复制构造函数,即实参复制给形参,形参复制给内嵌对象两次。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 对象