备注:实验报告的命名方式为:实验报告3+学号+姓名.doc 一、实验目的
1. 理解概念:类的构造函数、拷贝构造函数、析构函数。 2. 理解类的构造函数和析构函数的作用及运行机制。
3. 掌握构造函数、拷贝构造函数和析构函数的定义及应用。 4. 理解类的组合关系,并掌握类组合关系的实现。 二、实验内容(将源代码写在对应题目的下面) 1.基础部分
(1)定义一个日期类Date,包括月、日、年3个私有数据成员,函数成员包括公有的构造函数(包括带参构造函数,无参构造函数)、拷贝构造函数和析构函数、设置数据成员和获取数据成员等函数;在main函数中定义Date类的对象,对其进行初始化、修改和输出。(可自行增加需要的成员函数)
(2)定义学生类Student,包括一些基本信息如学号,姓名,性别,出生日期属于日期类Date型(利用第(1)题的Date类),函数成员包括公有的构造函数(包括带参构造函数,无参构造函数)、拷贝构造函数和析构函数、设置数据成员和获取数据成员等函数;在main函数中定义Student类的对象,对其进行初始化、修改和输出。(这是组合类的问题。请使用构造函数实现对象成员的初始化。可自行增加需要的成员函数) #include
public: Date() { }
Date(int y,int m,int d):m_year(y),m_month(m),m_day(d) { }
Date(Date &con_date) {
m_year=con_date.m_year; m_month=con_date.m_month; m_day=con_date.m_day; }
~Date() { }
void show() {
cout< int getM_year() { return m_year; } void setM_year(int m_year) { this->m_year=m_year; } private: int m_year,m_month,m_day; }; class Student { public: Student() { } Student(int id,string na,string ge,Date &birth):birthday(birth) { idnumber=id; name=na; gender=ge; } Student(int id,string na,string ge,int year,int month,int day):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; } void show() { cout<<\ <<\ <<\ cout< //显示的格式: Student:id-name-gender-Date.show } void setName(string name) { this->name=name; } string getName() { return name; } ~Student() { } private: int idnumber; string name; string gender; Date birthday; }; int main() { int x,y,z,i; string n,m; cout<<\ cin>>i; cout<<\ cin>>n; cout<<\ cin>>m; cout<<\ cin>>x>>y>>z; Date one(x,y,z); Student s1(i,n,m,one); cout< 2.进阶部分 (3)利用第(1)题和第(2)题中定义的Date类和Student类,在main函数中定义班级通讯录(可用Student类的对象数组实现,数组元素个数可以定义符号常量),并添加本班同学和显示同学信息。 (4)读程序写结果。注:这是一个组合类的问题。点类point的两个对象组合成了line类。线类的构造函数实现了对象成员p1、p2的初始化。 #include #include using namespace std; class point { private: int x; int y; void setx(int xx) { x=xx; } void sety(int yy) { y=yy; } public: //下面这段被注释掉的无参构造函数,如果去掉注释,会怎么样?分析原因。 /*point() { x=0; y=0; }*/ point(int xx=0,int yy=0); point(const point&pt) { x=pt.x; y=pt.y; cout<<\ } void setxy(int xx,int yy) { setx(xx); sety(yy); } int getx() { return x; } int gety() { return y; } void showpoint() {