您的当前位置:首页正文

实验五 虚函数与多态性

来源:九壹网


实验五 虚函数与多态性

一、实验目的与要求

(1) 学习虚函数和纯虚函数的定义与使用方式。

(2) 理解抽象类的概念,学习如何用指针指向其他的派生类,实现多态性。

(3) 掌握抽象类的定义与使用方式,并注意指针的用法。

(4) 学习如何使用虚函数、纯虚函数、抽象类和实现类的多态性。

二、实验设备与平台

实验设备要求每个学生一台电脑,其中运行环境为VC++ 6.0系统。

三、实验内容与步骤

实验1、虚函数的简单使用。

# include

class base

{

public:

virtual void fh() {cout << \"In base class \\n \" ; }

};

class subclass: public base

{

public:

virtual void fn() { cout << \"In subclass \\n \" ; }

};

void test( base &b)

{ b.fh(); }

void main( )

{

base be;

subclass sc;

cout << \" Calling test(bc) \\n\" ;

test(be);

cout << \"Calling test(sc) \\n \" ;

test(sc);

}

实验2、用抽象类实现的菜单程序。

#include < iostream.h >

class Menu

{

public:

virtual void action ( ) = 0;

};

class item1: public Menu

{

public:

virtual void action ()

{cout<< \"新建文件\" << endl;}

};

class item2: public Menu

{public :

virtual void action ( )

{cout<< \"打开文件 \" << endl;}

};

class item3: public Menu

{public:

virtual void action ( )

{cout << \"保存文件\" <};

class item4: public Menu

{public:

virtual void action()

{cout << \"关闭文件\" << endl;}

};

void main()

{ int select;

Menu * Fptr[4];

Fptr[0] = new item1;

Fptr[1] = new item2;

Fptr[2] = new item3;

Fptr[3] = new item4;

do

{

cout << \" 1 new file \" << endl;

cout << \" 2 open file \" << endl;

cout << \" 3 save file \" << endl;

cout << \"4 close file \" << endl;

cout << \"0 exit \" << endl;

cin >> select;

if( select >= 1 && select <= 4)

Fptr[select-1]->action();

}while( select!= 0 ) ;

for ( int i = 0 ; i <= 3 ; i++ )

{ delete Fptr[i]; }

}

实验3:定义一个从正方形、球体和圆柱体的各种运算中抽象出一个公共基 container类,在其中定义表面积和体积的纯虚函数,在抽象类中定义一个公共的成员数据radius,此数据可作为球体的半径,正方形的边长,圆柱体的底面的半径。

分析:

定义一个派生于container类的正方体类cube,在类中都具有求表面积的和体积的重定义的成员函数。

定义一个派生于container类的球体类sphere,在类中都具有求表面积和体积的重定义的成员函数。

定义一个派生于container类的圆柱体类cylinder,在类中都具有求表面积和体积的重定义的成员函数。

实验4:编写一个人员信息管理系统。这个系统的功能是:交互式的实现校园人员信息的录入与显示。

分析:

学校里,主要有四类人员:大学本科学生、教师、研究生和助教。

大学本科生每周有固定的学时数。教师除了固定的学时数外,还有每周的教学时数。研究生除了固定的学时数外,每周还可以自由做一定的研究。助教生除了上课外,还要做研究和一定的教学工作。

人员的基本信息包括姓名、编号、性别、身份证号、总学时数以及每周固定学时数。各个人员之间的关系: people类派生出student 类和teacher类,student 类派生出graduate类, graduate类和teacher类派生出TA类。

以下给出部分程序:

#include \"stdafx.h\"

#include < iostream.h >

class people

{

public:

//添加程序

private:

};

class student: virtual public people

{

public:

//添加程序

private:

};

class teacher:virtual public people

{

public:

//添加程序

private:

};

class graduate: virtual public student

{

public:

//添加程序

private:

};

class TA : public graduate, public teacher

{

public:

//添加程序

private:

};

void main()

{

//添加程序

}

因篇幅问题不能全部显示,请点此查看更多更全内容