多态性和虚函数 实验报告

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

淮海工学院计算机科学系实验报告书

课程名:《 C++程序设计(二)》

题目:多态性和虚函数

班级:

学号:

姓名:

1、实验内容或题目

(1)声明二维坐标类作为基类派生圆的类,把派生类圆作为基类,派生圆柱体类。其中,基类二维坐标类有成员数据:x、y坐标值;有成员函数:构造函数实现对基类成员数据的初始化、输出的成员函数,要求输出坐标位置。派生类圆类有新增成员数据:半径(R);有成员函数:构造函数实现对成员数据的初始化、计算圆面积的成员函数、输出半径的成员函数。派生圆柱体类新增数据有高(H);新增成员函数有:构造函数、计算圆柱体体积的函数和输出所有成员的函数。请完成程序代码的编写、调试。

(2)教材393页7-8题。

(3)教材416页1、4、5题。

2、实验目的与要求

(1)理解继承与派生的概念

(2)掌握通过继承派生出一个新的类的方法

(3)了解多态性的概念

(4)了解虚函数的作用与使用方法

3、实验步骤与源程序

⑴实验步骤

先定义一个基类point,及其成员函数,然后以public的继承方式定义子类circle,再定义一个派生类cylinder,最后在main主函数中定义类对象,调用函数实现其功能。

先定义一个基类A及其重载的构造函数,然后以Public派生出子类B,再定义其构造函数,最后在main主函数中定义类对象,调用成员函数实现其功能。

⑵源代码

1.#include

class Point

{

public:

Point(float=0,float=0);

void setPoint(float,float);

float getX() const {return x;}

float getY() const {return y;}

friend ostream & operator<<(ostream &,const Point &); protected:

float x,y;

};

Point::Point(float a,float b)

{x=a;y=b;}

void Point::setPoint(float a,float b)

{x=a;y=b;}

ostream & operator<<(ostream &output,const Point &p)

{

cout<<"["<

return output;

}

class Circle:public Point

{

public:

Circle(float x=0,float y=0,float r=0);

void setRadius(float);

float getRadius() const;

float area () const;

friend ostream &operator<<(ostream &,const Circle &); protected:

float radius;

};

Circle::Circle(float a,float b,float r):Point(a,b),radius(r){}

void Circle::setRadius(float r)

{radius=r;}

float Circle::getRadius() const {return radius;}

float Circle::area() const

{return 3.14159*radius*radius;}

ostream &operator<<(ostream &output,const Circle &c)

{

cout<<"Center=["<

Point &pRef=cy1;

cout<<"\npRef as a point:"<

Circle &cRef=cy1;

相关文档
最新文档