以点类Point为基类公有派生圆类Circle,并以圆类Circle为基类公有派生球类Sphere,main(void)函数完成对其的测试。

Point类结构说明:

Point类的数据成员包括:
①私有数据成员:X坐标x(double型),Y坐标y(double型)。
Point类成员函数包括:
①有参构造函数Point(double, double)和拷贝构造函数Point(const  Point  &),其中有参构造函数参数默认值为0,输出信息“Point Constructor run”,拷贝构造函数输出信息“Point CopyConstructor run”
②析构函数,析构函数输出信息“Point Destructor run”
③公有函数成员:void  setX(double)和double getX() const分别返回和设置X坐标
④公有函数成员:void  setY(double)和double getY() const分别返回和设置Y坐标
⑤公有成员函数void show() const用于显示点的坐标信息,显示格式为:(x,y)
⑥公有成员函数double area() const用于计算点的面积,点的面积为0

###Circle类结构说明:

公有派生圆类Circle以点类Point为基类,相较于点类Point,Circle类的结构说明如下:
Circle类的数据成员包括:
①私有数据成员:X坐标x继承自Point类,Y坐标y继承自Point类。
②私有数据成员:半径radius(double型)
③静态数据常量PI(double型),其值为3.14159
Circle类成员函数包括:
①定义有参构造函数Circle(double, double, double)和拷贝构造函数Circle(Circle &),其中有参构造函数参数包括圆心坐标和半径,圆心调用Point类构造函数进行构造,各参数默认值为0,输出信息“Circle Constructor run”,拷贝构造函数输出信息“Circle CopyConstructor run”
②定义析构函数,析构函数输出信息“Circle Destructor run”
③定义公有函数成员:void setRadius(double)和double getRadius() const分别返回和设置radius
④定义公有成员函数double circumference() const用于计算圆的周长
⑤重载double area() const用于计算圆的面积
⑥重载void show() const用于显示圆的信息,显示格式为:
(圆心X坐标,圆心Y坐标),Radius=半径

Sphere类结构说明:

公有派生球类Sphere以圆类Circle为基类,Sphere类的结构说明如下:
Sphere类的数据成员包括:
①私有数据成员:X坐标x继承自Circle类,Y坐标y继承自Circle类,半径radius继承自Circle类。
②静态数据常量PI继承自Circle类。
Sphere类成员函数包括:
①定义有参构造函数Sphere(double, double, double)和拷贝构造函数Sphere(Sphere &),其中有参构造函数参数包括圆心坐标和半径,圆心调用Point类构造函数进行构造,各参数默认值为0,输出信息“Sphere Constructor run”,拷贝构造函数输出信息“Sphere CopyConstructor run”
②定义析构函数,析构函数输出信息“Sphere Destructor run”
③定义公有成员函数double volume() const用于计算球的体积
④重载double area() const用于计算球的表面积

裁判测试程序样例:

#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; } /*请在这里填写答案*/ //主函数 int main(void){ double r; cin>>r; Sphere s1(1,2,4),s2(s1); s1.show(); cout<<endl<<"Area="<<s1.area()<<endl<<"Volume="<<s1.volume()<<endl; s2.setRadius(r); s2.Circle::show(); cout<<endl<<"Area="<<s2.Circle::area()<<endl<<"Circumference="<<s2.Circle::circumference()<<endl; return 0; }

输入样例:

6.0

输出样例:

Point Constructor run
Circle Constructor run
Sphere Constructor run
Point CopyConstructor run
Circle CopyConstructor run
Sphere CopyConstructor run
(1,2),Radius=4
Area=201.062
Volume=268.082
(1,2),Radius=6
Area=113.097
Circumference=37.6991
Sphere Destructor run
Circle Destructor run
Point Destructor run
Sphere Destructor run
Circle Destructor run
Point Destructor run

答案是:

#define PI 3.14159
class Circle:public Point 
{
    protected:
        double radius;
    public:
        //static double PI;//
        Circle(double x1=0,double y1=0,double radius1=0);
        Circle(Circle&);
        ~Circle();
        void setRadius(double);
        double getRadius() const;
        double circumference() const;
        double area() const;
        void show() const; 
};
//double Circle::PI=3.14159;//!!! 
Circle::Circle(double x1,double y1,double radius1):Point(x1,y1),radius(radius1)
{
    cout<<"Circle Constructor run"<<endl;
}
Circle::Circle(Circle&C):Point(C)
{
    x=C.x;
    y=C.y;//!!!
    radius=C.radius;
    cout<<"Circle CopyConstructor run"<<endl;
}
Circle::~Circle()
{
    cout<<"Circle Destructor run"<<endl;
}
void Circle::setRadius(double radius1)
{
    radius=radius1;
}    
double Circle::getRadius() const
{
    return radius;
}
double Circle::area() const
{
    return PI*radius*radius;
}
double Circle::circumference() const
{
    return 2*PI*radius;
}
void Circle::show() const
{
    cout << "(" << x << "," << y << ")"<<","<<"Radius="<<radius;
}

class Sphere:public Circle
{
    public:
        //static double PI;
        Sphere(double x1=0,double y1=0,double r=0);
        Sphere(Sphere &s);
        ~Sphere();
        double volume() const;
        double area() const;
};
//double Sphere::PI=3.14159;
Sphere::Sphere(double x1/*=0*/,double y1/*=0*/,double r/*=0*/):Circle(x1,y1,r)//,radius(r)
{
    cout<<"Sphere Constructor run"<<endl;
}
Sphere::Sphere(Sphere &s):Circle(s)
{
    x=s.x;
    y=s.y;
    radius=s.radius;
    cout<<"Sphere CopyConstructor run"<<endl;
}
Sphere::~Sphere()
{
    cout<<"Sphere Destructor run"<<endl;
}
double Sphere::volume() const
{
    return (4*PI*radius*radius*radius)/3;
}
double Sphere::area() const
{
    return 4*PI*radius*radius;
}

!!!注:答案代码里有很多//注释,记得自己删!

【以圆类Circle为基础设计球类Sphere】相关推荐

  1. java 圆类 圆锥类_以圆类 Circle 及立体图形类 Solid 为基础设计圆锥类 Cone

    学习内容:以圆类 Circle 及立体图形类 Solid 为基础设计圆锥类 Cone 代码示例: import java.util.Scanner; class Point4{ private dou ...

  2. C++编程练习:多态实验——设计一个基类Shapes,Shapes类公有派生产生矩形类Rectangle和圆类Circle

    例.设计一个基类Shapes,包含成员函数display()并声明为纯虚函数.Shapes类公有派生产生矩形类Rectangle和圆类Circle,分别定义display()函数实现其主要几何元素的显 ...

  3. c++继承与派生(设计一个圆类Circle和一个桌子类Table,另设计一个圆桌类Roundtable,它是前面两个类的派生类,要求编写测试程序给出输出一个圆桌的高度、面积和颜色等数据。)

    #设计一个圆类Circle和一个桌子类Table,另设计一个圆桌类Roundtable,它是前面两个类的派生类,要求编写测试程序给出输出一个圆桌的高度.面积和颜色等数据. #include<io ...

  4. 创建一个圆类Circle的对象,分别设置圆的半径计算并分别显示圆半径、圆面积、圆周长。...

    编写一个圆类Circle,该类拥有: ①一个成员变量 Radius(私有,浮点型): // 存放圆的半径: ②两个构造方法 Circle( ) // 将半径设为0 Circle(double r ) ...

  5. 定义一个圆类——Circle,在类的内部提供一个属性:半径(r),同时 提供 两个 方 法 : 计算 面积 ( getArea() ) 和 计算 周长(getPerimeter()) 。

    定义一个圆类--Circle,在类的内部提供一个属性:半径®,同时 提供 两个 方 法 : 计算 面积 ( getArea() ) 和 计算 周长(getPerimeter()) . 通过两个方法计算 ...

  6. 编写一个圆类Circle

    编写一个圆类Circle,该类拥有: ①一个成员变量 Radius(私有,浮点型): // 存放圆的半径: ②两个构造方法 Circle( ) // 将半径设为0 Circle(double r ) ...

  7. 【项目四】圆类Circle

    题目描述 根据下面的要求实现圆类Circle: 成员变量:radius 方法: 构造方法: Circle(),将半径置为0: Circle(int r),将半径置初始化为r: 修改器/访问器:对半径进 ...

  8. 定义一个圆类(Circle)

    –      定义一个圆类(Circle),其所在的包为bzu.info.software:定义一个圆柱类Cylinder,其所在的包为bzu.info.com:定义一个主类A,其所在的包也为bzu. ...

  9. 定义一个圆类Circle,成员变量:半径 radius;成员方法:构造方法、get和set半径的方法、计算面积和周长的方法。

    (1)定义一个圆类Circle,成员变量:半径 radius:成员方法:构造方法.get和set半径的方法.        计算面积和周长的方法.定义圆柱和圆锥类,定义相应的变量成员和成员方法.使用以 ...

最新文章

  1. SAP Batch Derivation功能初探之一
  2. android adb恢复出厂设置,android开发分享擦除数据/通过ADB恢复出厂设置
  3. 067_为什么要使用xhtml
  4. python3解析json数据_Python3高级教程
  5. python链表_使用python实现链表操作
  6. 自动生成三层结构代码(3)--生成数据访问层Insert方法
  7. c语言集合除去相同元素,使用C语言去掉字符串集合重复元素
  8. Tomcat相关 -- 内存设置
  9. 垃圾收集中的代际差异
  10. QMap排序方法运用实例
  11. 开源框架_Index
  12. Ubuntu如何查看端口已经开放
  13. JDK1.6官方下载_JDK6官方下载
  14. NLP 分类问题的讨论
  15. 基于angularjs的单页面实例_angularjs实例网站
  16. WMT 2022国际机器翻译大赛发榜,微信翻译斩获三项任务冠军
  17. html聊天室ui,震惊!这个H5居然是在线聊天室!(内附完整教程)
  18. java mq编程_MQ java 基础编程
  19. 【C语言】BC102 带空格直角三角形图案(DAY 9)
  20. NV21格式图像旋转 c++,平移、缩放实现代码

热门文章

  1. 10分钟带你玩转openpyxl
  2. Dota游戏中的护甲分析
  3. logrotate 使用方法
  4. Spring Boot独特注解
  5. 圣安地列斯服务器怎么注册码,圣安地列斯SAMP Server搭建联机服务器教程
  6. 基于光照的物理模型(一)_使用基于物理的阴影:一种实用方法
  7. 带你一起来摸鱼(快看摸鱼方法了)
  8. 微信公众号内容如何获取,python教你抓包分析并保存数据
  9. 近几年在淘宝及阿里云上的高可用架构演进
  10. 机器学习-19-Unsupervised Learning-03-PCA part2(无监督学习之PCA深入探讨 part2)