定义一个点类,派生出一个圆类,再由圆类派生出圆柱类

定义一个点类,派生出一个圆类,再由圆类派生出圆柱类。

代码如下:

#include <iostream>
#include<string>
using namespace std;

//声明类Point
class Point
{
public:
  Point(float x=0,float y=0);//有默认参数的构造函数
void setPoint(float,float);                 //设置坐标值
  float getX( ) const {return x;}              //读x坐标
  float getY( ) const {return y;}              //读y坐标
protected:                                   //受保护成员
  float x,y;
};
//下面定义Point类的成员函数
//Point的构造函数
Point::Point(float a,float b)                 //对x,y初始化
{x=a;y=b;}
//设置x和y的坐标值
void Point::setPoint(float a,float b)         //为x,y赋新值
{x=a;y=b;}

class Circle: public   Point        //circle是Point类的公用派生类
{public:
  Circle(float x=0,float y=0,float r=0); //构造函数
  void setRadius(float);                 //设置半径值
  float getRadius( ) const;               //读取半径值
  float area ( ) const;                   //计算圆面积
  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;}
class Cylinder:public Circle// Cylinder是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;                       //计算圆柱体积
 
 protected:
  float height;                               //圆柱高
};
//定义构造函数
Cylinder::Cylinder(float a,float b,float r,float h)  
	: Circle(a,b,h) ,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;}
	
int main( )
{
Point p(3.5,6.4);//建立Point类对象p
 cout<<"x="<<p.getX( )<<",y="<<  p.getY()   <<endl;//输出p的坐标值
 p.setPoint(8.5,6.8);                            //重新设置p的坐标值
                      
 cout<<"x="<< p.getX()           <<",y="<< p.getY()             <<endl;//输出p的坐标值
Circle c(3.5,6.4,5.2);//建立Circle类对象c,并给定圆心坐标和半径
cout<<"original circle:\nx="<<c.getX()<<", y="<<c.getY()<<", r="<<  c.getRadius( )
	<<", area="<< c.area()           <<endl;     //输出圆心坐标、半径和面积
 c.setRadius(7.5);                   //设置半径值
 c.setPoint(5,5);                    //设置圆心坐标值x,y
cout<<"original circle:\nx="<<c.getX()<<", y="<<c.getY()<<", r="<<  c.getRadius( )
     <<", area="<<c.area( )<<endl;     //输出圆心坐标、半径和面积
           
Cylinder cy1(3.5,6.4,5.2,10);//定义Cylinder类对象cy1
 cout<<"\n cylinder:\nx="<<cy1.getX( )<<", y="<<cy1.getY( )<<", r="
     <<cy1.getRadius( )<<", h="<<cy1.getHeight( )<<"\\narea="<<cy1.area()
	 <<",volume="<<cy1.volume()  <<endl;//用系统定义的运算符"<<"输出cy1的数据
 cy1.setHeight(15);                     //设置圆柱高
 cy1.setRadius(7.5);                    //设置圆半径
 cy1.setPoint(5,5);                     //设置圆心坐标值x,y
 cout<<"\n cylinder:\nx="<<cy1.getX( )<<", y="<<cy1.getY( )<<", r="
     <<cy1.getRadius( )<<", h="<<cy1.getHeight( )<<"\\narea="<<cy1.area()
     <<",volume="<<cy1.volume()<<endl;       //输出cy1的数据
return 0;
}
  • 7
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃冰粉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值