C++ 定义形状类并派生圆类和矩形类 定义点类为圆类和矩形类定义合适的属性,然后定义成员函数计算面积
时间: 2024-10-10 19:02:29 浏览: 46
在C++中,我们可以首先定义一个基础形状类Shape,接着定义两个派生类Circle(圆形)和Rectangle(矩形),以及一个Point(点)类。这里是一个简单的例子:
```cpp
// Shape 类
class Shape {
protected:
Point center; // 点类实例作为基类属性
public:
// 构造函数和析构函数
Shape(Point c) : center(c) {}
virtual ~Shape() {}
// 计算面积的纯虚函数,子类需要覆盖
virtual double getArea() const = 0;
};
// Circle 类,从 Shape 派生
class Circle : public Shape {
private:
double radius;
public:
Circle(Point c, double r) : Shape(c), radius(r) {}
double getArea() const override { return M_PI * radius * radius; }
};
// Rectangle 类,从 Shape 派生
class Rectangle : public Shape {
private:
double width, height;
public:
Rectangle(Point c, double w, double h) : Shape(c), width(w), height(h) {}
double getArea() const override { return width * height; }
};
// Point 类
class Point {
private:
double x, y;
public:
Point(double x, double y) : x(x), y(y) {}
// 提供访问x和y坐标的方法...
};
```
在这个例子中,`getArea`函数是Shape类的一个纯虚函数,每个派生类都必须提供自己的实现。这样,无论我们创建的是Circle还是Rectangle对象,只要它们都是Shape类型的,就可以通过Shape指针调用getArea方法,并得到相应的面积值。
阅读全文