实验8多态性与虚函数程序代码

  • 格式:doc
  • 大小:46.00 KB
  • 文档页数:6

下载文档原格式

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

实验八多态性与虚函数参考程序代码

1.程序8-1

文件一:

#include//如用VC++应改为∶#include

using namespace std; //如用VC++应取消此行

#include"cylinder.h"

#include"point.cpp"

#include"circle.cpp"

#include"cylinder.cpp"

int main()

{Cylinder cy1(3.5,6.4,5.2,10);

cout<<"\noriginal cylinder:\nx="<

Point &pRef=cy1;

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

Circle &cRef=cy1;

cout<<"\ncRef as a Circle:"<

return 0;

}

文件二:

//CYLINDER.H

#include"circle.h"

class Cylinder:public Circle

{public:

Cylinder (float x=0,float y=0,float r=0,float h=0);

void setHeight(float);

float getHeight() const;

float area() const;

float volume() const;

friend ostream& operator<<(ostream&,const Cylinder&);

protected:

float height;

};

文件三:

//POINT.CPP

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)

{output<<"["<

return output;

}

文件四:

//CIRCLE.CPP

//#include

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)

{output<<"Center=["<

area="<

return output;

}

文件五:

//CYLINDER.CPP

Cylinder::Cylinder(float a,float b,float r,float h)

:Circle(a,b,r),height(h){}

void Cylinder::setHeight(float h){height=h;}

float Cylinder::getHeight() const {return height;}

float Cylinder::area() const

{ return 2*Circle::area()+2*3.14159*radius*height;}

float Cylinder::volume() const

{return Circle::area()*height;}

ostream &operator<<(ostream &output,const Cylinder& cy)

{output<<"Center=["<

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;

};

2.程序8-2

解一:

#include

using namespace std;

class Point

{public:

Point(float a,float b):x(a),y(b){}

~Point(){cout<<"executing Point destructor"<

private:

float x;

float y;

};

class Circle:public Point

{public:

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

~Circle(){cout<<"executing Circle destructor"<

private:

float radus;

};

int main()

{Point *p=new Circle(2.5,1.8,4.5);

delete p;

return 0;

}

解二:

#include