C++大学教程第九版18.4题
时间: 2023-07-11 22:09:00 浏览: 47
题目描述:
定义一个基类 `Shape`,其中包含一个纯虚函数 `getArea()`。从 `Shape` 派生出两个类 `Rectangle` 和 `Circle`,分别实现 `getArea()` 函数以计算矩形和圆的面积。在主函数中创建这两个类的对象并调用它们的 `getArea()` 函数。
解题思路:
1. 定义基类 `Shape`,包含纯虚函数 `getArea()`。
2. 从 `Shape` 派生出两个派生类 `Rectangle` 和 `Circle`。
3. 在 `Rectangle` 类中实现 `getArea()` 函数以计算矩形的面积。
4. 在 `Circle` 类中实现 `getArea()` 函数以计算圆的面积。
5. 在主函数中创建 `Rectangle` 和 `Circle` 对象,并分别调用它们的 `getArea()` 函数。
参考代码:
```c++
#include <iostream>
using namespace std;
class Shape {
public:
virtual double getArea() = 0; // 纯虚函数
};
class Rectangle : public Shape {
private:
double width;
double height;
public:
Rectangle(double w, double h) {
width = w;
height = h;
}
double getArea() override {
return width * height;
}
};
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) {
radius = r;
}
double getArea() override {
return 3.1415926 * radius * radius;
}
};
int main() {
Rectangle r(4, 5);
Circle c(3);
cout << "Rectangle area is: " << r.getArea() << endl;
cout << "Circle area is: " << c.getArea() << endl;
return 0;
}
```
输出结果:
```
Rectangle area is: 20
Circle area is: 28.2743
```