c++1.设计抽象基类Shape类 2.由Shape类派生出Circle圆类,Rectangle矩形类,Triangle三角形类 3.用函数printArea分别实现圆类、矩形类、三角形类的面积 4.用基类Shape类的指针输出圆类、矩形类、三角形类的面积
时间: 2024-03-23 21:39:30 浏览: 83
好的,这是一个关于 C++ 继承和多态的问题。我会根据您的要求进行回答,以下是代码实现:
```c++
#include <iostream>
using namespace std;
class Shape {
public:
virtual double getArea() = 0; // 纯虚函数,表示该函数在基类中没有实现,需要在派生类中实现
};
class Circle : public Shape {
private:
double radius;
public:
Circle(double r): radius(r) {}
double getArea() {
return 3.14 * radius * radius;
}
};
class Rectangle: public Shape {
private:
double width, height;
public:
Rectangle(double w, double h): width(w), height(h) {}
double getArea() {
return width * height;
}
};
class Triangle: public Shape {
private:
double base, height;
public:
Triangle(double b, double h): base(b), height(h) {}
double getArea() {
return 0.5 * base * height;
}
};
void printArea(Shape* s) {
cout << "面积为:" << s->getArea() << endl;
}
int main() {
Circle c(5);
Rectangle r(4, 6);
Triangle t(3, 4);
printArea(&c);
printArea(&r);
printArea(&t);
return 0;
}
```
这段代码定义了一个 `Shape` 抽象基类,它只有一个纯虚函数 `getArea()`,派生类必须实现该函数。然后,派生了三个类 `Circle`、`Rectangle` 和 `Triangle`,并分别实现了 `getArea()` 函数。最后,定义了一个 `printArea()` 函数,参数是 `Shape` 类型的指针,可以输出任意一个 `Shape` 派生类的面积。在 `main()` 函数中,我们创建了一个 `Circle` 对象、一个 `Rectangle` 对象和一个 `Triangle` 对象,并通过 `printArea()` 函数输出了它们的面积。
希望这个例子能够帮助您理解 C++ 继承和多态的概念。
阅读全文