实验5(1) 参考答案

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验5(1) 类的组合

参考答案

一、实验目的与实验要求

(1)理解类组合的概念与作用。

(2)掌握对象成员的定义方法,理解对象成员的构造与析构方法。

(3)理解组合后类的构造函数与析构函数的调用次序。

(4)掌握对象成员中私有成员和保护成员的访问方法。

二、实验内容

题目1:对象成员的定义、构造与访问。

定义三个类Member1、Member2和New。Member2中包含有Member1类型的成员,New中包含有Member1与Member2类型的成员。程序的具体要求如下。

①在Member1类中,它含有一个int型私有数据成员x以及三个公有成员函数。三个成员函数分别为构造函数、析构函数与显示函数show( )。show( )函数的作用是输出x的值。

②在Member2类中,它含有三个私有数据成员,分别是Member1型的对象obj1、obj2与int型的数据y。此外,它还含有三个公有成员函数,分别是构造函数、析构函数与显示函数show( )。show( )函数的作用是输出y的值。

③在New类中,它含有三个私有数据成员,分别是Member1型的对象m1、Member2型的对象m2与int型的数据z。此外,它还含有三个公有成员函数,分别是构造函数、析构函数与显示函数show( )。show( )函数的作用是输出z的值。

④main( )函数中定义一个New型的对象,并调用show( )函数。

程序为:

#include

using namespace std;

class Member1

{

public:

Member1(int a)

{

x = a;

cout << "constructing Member1 " << x << endl;

}

~Member1( )

{

cout << "donstructing Member1\n";

}

void show( )

{

cout << "Member1 x = " << x << endl;

}

private:

int x;

};

class Member2

{

public:

Member2( int a,int b,int c ):obj1(a),obj2(b)

{

y = c;

cout << "constructing Member2 " << y << endl;

}

~Member2( )

{

cout << "donstructing Member2\n";

}

void show( )

{

cout << "Member2 y = " << y << endl;

}

private:

Member1 obj1, obj2;

int y;

};

class New

{

public:

New( int a,int b,int c,int d,int e): m1(a),m2(b,c,d)

{

z = e;

cout << "constructing New " << z << endl;

}

~New( )

{

cout << "donstructing New\n";

}

void show( )

{

cout << "New z = " << z << endl;

}

private:

Member1 m1;

Member2 m2;

int z;

};

int main( )

{

New ex(1,2,3,4,5);

ex.show( );

return 0;

}

题目2:类组合的应用。

编写一个程序,对一批学生的资料进行处理。程序的具体要求如下。

①编写日期类Date,它含有三个私有int型数据成员year、month、day,分别表示年、月、日。此外,它还含有五个公有成员函数,分别是构造函数、显示函数Show( )、取值函数GetYear( )、GetMonth( )和GetDay( )。Show( )的功能是输出当前对象的日期,GetYear( )、GetMonth( )、GetDay( )的作用分别是返回year、month和day的值。

②编写学生类Student,它含有三个私有数据成员,分别是字符串型变量name、int型变量score与Date型变量birthday,分别表示学生的姓名、成绩与出生日期。此外,它还含有五个公有成员函数,分别是构造函数、显示函数Show( )、取值函数GetName( )、GetScore( )和GetDate( )。Show( )的功能是输出当前对象的所有信息,GetName( )、GetScore( )、GetDate( ) 的作用分别是返回name的首地址、score的值以及birthday的值。

③编写函数CompareDate。它的原型如下,它的作用是比较日期d1和d2的前后。如果d1在d2前,返回-1,如果d1在d2后,返回1,如果d1和d2是同一天,返回0。

int CompareDate( Date d1, Date d2 );

④编写函数SortByName。它的原型如下,它的作用是对st数组的前num个数据按姓名进行排序。

void SortByName( Student * st , int num );

⑤编写函数SortByScore。它的原型如下,它的作用是对st数组的前num个数据按成绩进行排序。

void SortByScore( Student *st , int num );

⑥编写函数SortByBirthday。它的原型如下,它的作用是对st数组的前num个数据按出生日期进行排序。

void SortByBirthday( Student * st, int num );

⑦编写函数PrintStudent。它的原型如下,它的作用是输出st数组的前num项。

void PrintStudent( Student *st , int num );

⑧编写主函数main( ),在main( )中定义对象数组st,并调用上述函数进行测试。st数组使用下列数据进行初始化。

Jack, 99, 1990, 2, 5

Mike, 62, 1989, 12, 25

Tom, 88, 1990, 3, 14

Kate, 74, 1989, 10, 15

Rowen, 92, 1990, 5, 22

程序如下:

#include

using namespace std;

相关文档
最新文档