实验二类与对象.docx

上传人:b****4 文档编号:27239750 上传时间:2023-06-28 格式:DOCX 页数:13 大小:60.05KB
下载 相关 举报
实验二类与对象.docx_第1页
第1页 / 共13页
实验二类与对象.docx_第2页
第2页 / 共13页
实验二类与对象.docx_第3页
第3页 / 共13页
实验二类与对象.docx_第4页
第4页 / 共13页
实验二类与对象.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

实验二类与对象.docx

《实验二类与对象.docx》由会员分享,可在线阅读,更多相关《实验二类与对象.docx(13页珍藏版)》请在冰豆网上搜索。

实验二类与对象.docx

实验二类与对象

武汉科技大学

 

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.组合类对象初始化时会调用两次内嵌对象的复制构造函数,即实参复制给形参,形参复制给内嵌对象两次。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1