详解C++编程的多态性概念

2020-01-06 13:43:42王振洲
 

3) 声明Circle的派生类Cylinder

前面已从基类Point派生出Circle类,现在再从Circle派生出Cylinder类。

 

 
  1. class Cylinder:public Circle// Cylinder是Circle的公用派生类  { 
  2. public:  Cylinder (float x=0,float y=0,float r=0,float h=0); //构造函数 
  3. void setHeight(float ); //设置圆柱高  float getHeight( )const; //读取圆柱高 
  4. loat area( )const; //计算圆表面积  float volume( )const; //计算圆柱体积 
  5. friend ostream& operator <<(ostream&,const Cylinder&); //重载运算符<<  protected: 
  6. float height;//圆柱高  }; 
  7. //定义构造函数  Cylinder::Cylinder(float a,float b,float r,float h):Circle(a,b,r),height(h){} 
  8. //设置圆柱高  void Cylinder::setHeight(float h){height=h;} 
  9. //读取圆柱高  float Cylinder::getHeight( )const {return height;} 
  10. //计算圆表面积  float Cylinder::area( )const { return 2*Circle::area( )+2*3.14159*radius*height;} 
  11. //计算圆柱体积  float Cylinder::volume()const {return Circle::area()*height;} 
  12. ostream &operator <<(ostream &output,const Cylinder& cy)  { 
  13. output<<"Center=["<<cy.x<<","<<cy.y<<"],r="<<cy.radius<<",h="<<cy.height <<"narea="<<cy.area( )<<", volume="<<cy.volume( )<<endl;  return output; 
  14. } //重载运算符“<<”