C++ 实验报告3 下载本文

备注:实验报告的命名方式为:实验报告3+学号+姓名.doc 一、实验目的

1. 理解概念:类的构造函数、拷贝构造函数、析构函数。 2. 理解类的构造函数和析构函数的作用及运行机制。

3. 掌握构造函数、拷贝构造函数和析构函数的定义及应用。 4. 理解类的组合关系,并掌握类组合关系的实现。 二、实验内容(将源代码写在对应题目的下面) 1.基础部分

(1)定义一个日期类Date,包括月、日、年3个私有数据成员,函数成员包括公有的构造函数(包括带参构造函数,无参构造函数)、拷贝构造函数和析构函数、设置数据成员和获取数据成员等函数;在main函数中定义Date类的对象,对其进行初始化、修改和输出。(可自行增加需要的成员函数)

(2)定义学生类Student,包括一些基本信息如学号,姓名,性别,出生日期属于日期类Date型(利用第(1)题的Date类),函数成员包括公有的构造函数(包括带参构造函数,无参构造函数)、拷贝构造函数和析构函数、设置数据成员和获取数据成员等函数;在main函数中定义Student类的对象,对其进行初始化、修改和输出。(这是组合类的问题。请使用构造函数实现对象成员的初始化。可自行增加需要的成员函数) #include #include using namespace std; class Date {

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

#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() {