以点类Point为基类构造圆类Circle

#include <iostream>
using namespace std;
class Point{
    protected:
      double x;
      double y;
    public:
      Point(double xv=0,double yv=0);//有参构造
      Point(const Point &p);         //拷贝构造
      ~Point();                      //析构函数
      void show() const;             //显示Point信息
      double area()const;            //面积=0
      void setX(double xv);          //设置X坐标
      void setY(double yv);          //设置Y坐标
      double getX() const;           //获取X坐标
      double getY() const;           //获取Y坐标
};
//有参构造
Point::Point(double xv,double yv){
    x=xv;
    y=yv;
    cout<<"Point Constructor run"<<endl;
}
//拷贝构造
Point::Point(const Point &p){
    x=p.x;
    y=p.y;
    cout<<"Point CopyConstructor run"<<endl;
}
//析构函数
Point::~Point(){
    cout<<"Point Destructor run"<<endl;
}
//显示Point
void Point::show() const{
    cout<<"("<<x<<","<<y<<")";
}
//设置X坐标
void Point::setX(double xv){
    x=xv;
}
//设置Y坐标
void Point::setY(double yv){
    y=yv;
}
//面积函数
double Point::area() const{
    return 0;
}
//获取X坐标
double Point::getX() const{
    return x;
}
//获取Y坐标
double Point::getY() const{
    return y;
}

class Circle:protected Point
{
private:
    double radius;
public:
    static double PI;
    Circle(double a=0,double b=0,double c=0);
    Circle(Circle &a);
    ~Circle();
    void setRadius(double a);
    double getRadius()const;
    double circumference()const;
    double area()const;
    void show()const;
};
double Circle:: PI=3.14159;
Circle::Circle(double a,double b,double c):Point(a,b),radius(c)
{cout<<"Circle Constructor run"<<endl;}
Circle::Circle(Circle &a):Point(a)
{
    x=a.x;
    y=a.y;
    radius=a.radius;
    cout<<"Circle CopyConstructor run"<<endl;
}
Circle::~Circle()
{
    cout<<"Circle Destructor run"<<endl;
}
void Circle::setRadius(double a)
{
    radius=a;
}
double Circle::getRadius()const
{
    return radius;
}
double Circle::circumference()const
{
    return 2*PI*radius;
}
double Circle::area()const
{
    return  PI*radius*radius;
}
void Circle::show()const
{
    cout<<"("<<x<<","<<y<<")"<<",Radius="<<radius;
}


int main(void){
    double  r;
    cout<<"输入圆的半径:"<<endl;
    cin>>r;
    Circle c1(1,2,4),c2,c3(c1);
    c1.show();
    cout<<endl<<"Area="<<c1.area()<<endl<<"Circumference="<<c1.circumference()<<endl;
    c2.show();
    cout<<endl<<"Area="<<c2.area()<<endl<<"Circumference="<<c2.circumference()<<endl;
    c3.setRadius(r);
    c3.show();
    cout<<endl<<"Area="<<c3.area()<<endl<<"Circumference="<<c3.circumference()<<endl;
    return 0;
}

代码运行截图如下:

猜你喜欢

转载自blog.csdn.net/y0205yang/article/details/118653123
今日推荐