1.设计抽象基类Shape类 2.由Shape类派生出Circle圆类,Rectangle矩形类,Triangle三角形类 3.用函数printArea分别实现圆类、矩形类、三角形类的面积 4.用基类Shape类的指针输出圆类、矩形类、三角形类的面积C++
时间: 2024-02-26 11:57:50 浏览: 75
以下是 C++ 代码实现:
```
#include <iostream>
#include <cmath>
using namespace std;
// 抽象基类 Shape
class Shape {
public:
virtual double getArea() = 0; // 纯虚函数,求面积
};
// 圆类 Circle,派生自 Shape
class Circle : public Shape {
public:
Circle(double r) : radius(r) {}
double getArea() {
return 3.14 * radius * radius;
}
private:
double radius;
};
// 矩形类 Rectangle,派生自 Shape
class Rectangle : public Shape {
public:
Rectangle(double l, double w) : length(l), width(w) {}
double getArea() {
return length * width;
}
private:
double length, width;
};
// 三角形类 Triangle,派生自 Shape
class Triangle : public Shape {
public:
Triangle(double b, double h) : base(b), height(h) {}
double getArea() {
return 0.5 * base * height;
}
private:
double base, height;
};
void printArea(Shape* s) {
cout << "面积为:" << s->getArea() << endl;
}
int main() {
Circle c(2.0);
Rectangle r(3.0, 4.0);
Triangle t(5.0, 6.0);
printArea(&c);
printArea(&r);
printArea(&t);
return 0;
}
```
上述代码中,我们首先定义了一个抽象基类 `Shape`,其中包含了一个纯虚函数 `getArea()`,用于求各种形状的面积。然后,我们派生出了圆类 `Circle`、矩形类 `Rectangle` 和三角形类 `Triangle`,它们都继承自 `Shape` 类,并实现了 `getArea()` 函数。最后,我们定义了一个函数 `printArea`,该函数以基类 `Shape` 的指针为参数,输出各种形状的面积。在 `main` 函数中,我们分别创建了圆、矩形和三角形的实例,并分别调用 `printArea` 函数输出它们的面积。
阅读全文