深入解析C++编程中的纯虚函数和抽象类

2020-01-06 13:45:49王旭

第(4)部分

 

 
  1. //声明Cylinder类  class Cylinder:public Circle 
  2. {  public: 
  3. Cylinder (float x=0,float y=0,float r=0,float h=0);  void setHeight(float ); 
  4. virtual float area( )const;  virtual float volume( )const; 
  5. virtual void shapeName( )const {  cout<<"Cylinder:"; 
  6. }//对虚函数进行再定义  friend ostream& operator <<(ostream&,const Cylinder&); 
  7. protected:  float height; 
  8. };  //定义Cylinder类成员函数 
  9. Cylinder::Cylinder(float a,float b,float r,float h):Circle(a,b,r),height(h){}  void Cylinder::setHeight(float h){height=h;} 
  10. float Cylinder::area( )const{  return 2*Circle::area( )+2*3.14159*radius*height; 
  11. }  float Cylinder::volume( )const{ 
  12. return Circle::area( )*height;  } 
  13. ostream &operator <<(ostream &output,const Cylinder& cy){  output<<"["<<cy.x<<","<<cy.y<<"], r="<<cy.radius<<", h="<<cy.height; 
  14. return output;  } 

Cylinder类是从Circle类派生的。由于圆柱体有表面积和体积,所以要对area和 volume函数重新定义。虚函数shapeName也需要重新定义。此外,Cylinder类还有自已 的成员函数setHeight和数据成员radius。

第(5)部分