定义5个重载函数GetArea()方法,分别求三角形、正方形、矩形、圆形和梯形的面积。
时间: 2024-11-09 12:19:13 浏览: 32
在面向对象编程中,为了处理不同形状的图形并计算各自的面积,你可以定义一个基类`Shape`,然后为每个具体的形状如`Triangle`, `Square`, `Rectangle`, `Circle`, 和 `Trapezoid` 创建派生类,并为它们实现重载的`GetArea()`方法。这里是一个简单的示例:
```cpp
class Shape {
public:
virtual double GetArea() const = 0; // 虚函数模板,声明不提供实现
};
class Triangle : public Shape {
private:
double base;
double height;
public:
Triangle(double base, double height) : base(base), height(height) {}
double GetArea() const override { return 0.5 * base * height; }
};
class Square : public Shape {
private:
double side;
public:
Square(double side) : side(side) {}
double GetArea() const override { return side * side; }
};
class Rectangle : public Shape {
private:
double length;
double width;
public:
Rectangle(double length, double width) : length(length), width(width) {}
double GetArea() const override { return length * width; }
};
class Circle : public Shape {
private:
double radius;
public:
Circle(double radius) : radius(radius) {}
double GetArea() const override { return M_PI * radius * radius; } // 使用π常数
};
class Trapezoid : public Shape {
private:
double a;
double b;
double height;
public:
Trapezoid(double a, double b, double height) : a(a), b(b), height(height) {}
double GetArea() const override { return (a + b) * height / 2; }
};
```
在这个例子中,每个形状类都实现了自己的`GetArea()`方法,可以根据传入的具体参数计算出相应形状的面积。
阅读全文