C++实验报告3.docx
- 文档编号:17061692
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:9
- 大小:31.19KB
C++实验报告3.docx
《C++实验报告3.docx》由会员分享,可在线阅读,更多相关《C++实验报告3.docx(9页珍藏版)》请在冰点文库上搜索。
C++实验报告3
C++-实验报告3
备注:
实验报告的命名方式为:
实验报告3+学号+姓名.doc
一、实验目的
1.理解概念:
类的构造函数、拷贝构造函数、析构函数。
2.理解类的构造函数和析构函数的作用及运行机制。
3.掌握构造函数、拷贝构造函数和析构函数的定义及应用。
4.理解类的组合关系,并掌握类组合关系的实现。
二、实验内容(将源代码写在对应题目的下面)
1.基础部分
(1)定义一个日期类Date,包括月、日、年3个私有数据成员,函数成员包括公有的构造函数(包括带参构造函数,无参构造函数)、拷贝构造函数和析构函数、设置数据成员和获取数据成员等函数;在main函数中定义Date类的对象,对其进行初始化、修改和输出。
(可自行增加需要的成员函数)
(2)定义学生类Student,包括一些基本信息如学号,姓名,性别,出生日期属于日期类Date型(利用第
(1)题的Date类),函数成员包括公有的构造函数(包括带参构造函数,无参构造函数)、拷贝构造函数和析构函数、设置数据成员和获取数据成员等函数;在main函数中定义Student类的对象,对其进行初始化、修改和输出。
(这是组合类的问题。
请使用构造函数实现对象成员的初始化。
可自行增加需要的成员函数)
#include
#include
usingnamespacestd;
classDate
{
public:
Date()
{
}
Date(inty,intm,intd):
m_year(y),m_month(m),m_day(d)
{
}
private:
intm_year,m_month,m_day;
};
classStudent
{
public:
Student()
{
}
Student(intid,stringna,stringge,Date&birth):
birthday(birth)
{
idnumber=id;
name=na;
gender=ge;
}
Student(intid,stringna,stringge,intyear,intmonth,intday):
birthday(year,month,day)
{
idnumber=id;
name=na;
gender=ge;
}
Student(Student&stu)
{
idnumber=stu.idnumber;
name=stu.name;
gender=stu.gender;
birthday=stu.birthday;
}
voidshow()
{
cout<<"name:
"< <<"number: "< <<"gender: "< ";birthday.show(); cout< //显示的格式: Student: id-name-gender-Date.show } voidsetName(stringname) { this->name=name; } stringgetName() { returnname; } ~Student() { } private: intidnumber; stringname; stringgender; Datebirthday; }; intmain() { intx,y,z,i; stringn,m; cout<<"pleaseinputidnumber: "< cin>>i; cout<<"pleaseinputname: "< cin>>n; cout<<"pleaseinputgender: "< cin>>m; cout<<"pleaseinputyear,month,day: "< cin>>x>>y>>z; Dateone(x,y,z); Students1(i,n,m,one); cout< s1.show(); return0; } 2.进阶部分 (3)利用第 (1)题和第 (2)题中定义的Date类和Student类,在main函数中定义班级通讯录(可用Student类的对象数组实现,数组元素个数可以定义符号常量),并添加本班同学和显示同学信息。 (4)读程序写结果。 注: 这是一个组合类的问题。 点类point的两个对象组合成了line类。 线类的构造函数实现了对象成员p1、p2的初始化。 #include #include #include usingnamespacestd; classpoint { private: intx; inty; voidsetx(intxx) { x=xx; } voidsety(intyy) { y=yy; } public: //下面这段被注释掉的无参构造函数,如果去掉注释,会怎么样? 分析原因。 /*point() { x=0; y=0; }*/ point(intxx=0,intyy=0); point(constpoint&pt) { x=pt.x; y=pt.y; cout<<"copyconstructor..."< } voidsetxy(intxx,intyy) { setx(xx); sety(yy); } intgetx() { returnx; } intgety() { returny; } voidshowpoint() { cout<<"x="< } ~point() { cout<<"pointdes..."< } }; inlinepoint: : point(intxx,intyy) { x=xx; y=yy; cout<<"constructor..."< } classline { private: pointp1,p2; public: line(point&tp1,point&tp2): p1(tp1),p2(tp2) { cout<<"linecons..."< } line(line<emp) { p1=ltemp.p1; p2=ltemp.p2; cout<<"linecopycons..."< } doublegetlen() { returnsqrt(pow(p1.getx()-p2.getx(),2)+pow(p1.gety()-p2.gety(),2)); } ~line() { cout<<"linedes..."< } }; voidmain() { pointp1,p2; p1.setxy(0,0); p2.setxy(1,1); linel12(p1,p2); cout< } 三、实验小结
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 实验 报告