C++设计一个图形基类包含长和宽,通过图形基类派生出三个不同的图形,并设计他们的接口计算面积
时间: 2024-09-30 07:14:08 浏览: 30
在C++中,我们可以首先创建一个名为`Shape`的图形基类,包含两个基本属性`length`和`width`。然后,为了支持多态,我们让这个基类定义一个纯虚函数`calculateArea()`,这个函数将在派生类中被具体实现。以下是相关的代码:
```cpp
// 图形基类
class Shape {
protected:
double length;
double width;
public:
// 构造函数
Shape(double l, double w) : length(l), width(w) {}
// 纯虚函数,用于计算面积
virtual double calculateArea() const = 0;
// 公共成员函数,用于获取长度和宽度
double getLength() const { return length; }
double getWidth() const { return width; }
};
// 派生类1:矩形
class Rectangle : public Shape {
private:
double side1;
double side2; // 这里假设矩形有两对边
public:
Rectangle(double l1, double l2, double w1, double w2)
: Shape(l1, w1), side1(l1), side2(l2) {}
// 实现calculateArea
double calculateArea() const override {
return side1 * side2;
}
};
// 派生类2:圆形
class Circle : public Shape {
private:
double radius;
public:
Circle(double r, double w) : Shape(r, w), radius(r) {}
// 圆形的面积计算公式
double calculateArea() const override {
return M_PI * radius * radius;
}
};
// 派生类3:三角形
class Triangle : public Shape {
private:
double base;
double height;
public:
Triangle(double b, double h, double w) : Shape(b / 2, w), base(b), height(h) {}
// 三角形面积计算公式
double calculateArea() const override {
return 0.5 * base * height;
}
};
阅读全文