定义一个Point类,在此基础上,定义一个“Circle”派生类,要求:新增一个半径成员;能计算并输出圆的周长及加圆面积(类的定义保存在头文件中,测试程序用exp_405.cpp)。
时间: 2024-02-13 10:05:06 浏览: 64
设计基类点类(Point)、直接派生类圆类(Circle)、间接派生类圆柱体类(Cylinder),将求面积的函数(area)声明成虚函数,并在主函数实现虚函数
好的,我明白了你的要求。以下是Point类和Circle类的定义:
```cpp
// Point.h
#ifndef POINT_H
#define POINT_H
class Point {
public:
Point(double x = 0.0, double y = 0.0) : x_(x), y_(y) {}
virtual ~Point() {}
double getX() const { return x_; }
double getY() const { return y_; }
void setX(double x) { x_ = x; }
void setY(double y) { y_ = y; }
private:
double x_, y_;
};
#endif // POINT_H
```
```cpp
// Circle.h
#ifndef CIRCLE_H
#define CIRCLE_H
#include "Point.h"
class Circle : public Point {
public:
Circle(double x = 0.0, double y = 0.0, double radius = 0.0)
: Point(x, y), radius_(radius) {}
virtual ~Circle() {}
double getRadius() const { return radius_; }
void setRadius(double radius) { radius_ = radius; }
double getCircumference() const { return 2 * 3.14159 * radius_; }
double getArea() const { return 3.14159 * radius_ * radius_; }
private:
double radius_;
};
#endif // CIRCLE_H
```
测试程序exp_405.cpp如下:
```cpp
#include <iostream>
#include "Circle.h"
using namespace std;
int main() {
Circle c(1.0, 2.0, 3.0);
cout << "Center: (" << c.getX() << ", " << c.getY() << ")" << endl;
cout << "Radius: " << c.getRadius() << endl;
cout << "Circumference: " << c.getCircumference() << endl;
cout << "Area: " << c.getArea() << endl;
return 0;
}
```
注意,为了计算圆的周长和面积,Circle类需要新增一个半径成员变量。getRadius()和setRadius()函数分别用于获取和设置半径。getCircumference()和getArea()函数分别用于计算周长和面积。测试程序中,我们创建了一个Circle对象c,并输出其圆心坐标、半径、周长和面积。
阅读全文