1. 定义一个Shape类,由它公有派生出矩形类Rectangle,和圆类Circle,它们都有计算面积的虚函数Area,在主函数中用Shape类型的指针调用这些 Area
时间: 2023-12-31 16:06:00 浏览: 165
设计基类点类(Point)、直接派生类圆类(Circle)、间接派生类圆柱体类(Cylinder),将求面积的函数(area)声明成虚函数,并在主函数实现虚函数
下面是代码实现:
```c++
#include <iostream>
using namespace std;
// 定义 Shape 类
class Shape {
public:
virtual double Area() = 0; // 纯虚函数
};
// 定义 Rectangle 类
class Rectangle : public Shape {
public:
Rectangle(double w, double h) : width(w), height(h) {}
double Area() { return width * height; }
private:
double width;
double height;
};
// 定义 Circle 类
class Circle : public Shape {
public:
Circle(double r) : radius(r) {}
double Area() { return 3.14159 * radius * radius; }
private:
double radius;
};
int main() {
Shape *p; // Shape 类型的指针
Rectangle rect(3, 4); // 定义 Rectangle 对象
Circle cir(5); // 定义 Circle 对象
p = ▭ // 将 Shape 指针指向 Rectangle 对象
cout << "Rectangle area: " << p->Area() << endl; // 调用 Rectangle 的 Area 函数
p = ○ // 将 Shape 指针指向 Circle 对象
cout << "Circle area: " << p->Area() << endl; // 调用 Circle 的 Area 函数
return 0;
}
```
输出结果为:
```
Rectangle area: 12
Circle area: 78.5398
```
可以看到,通过 Shape 类型的指针调用了 Rectangle 和 Circle 对象的 Area 函数,实现了多态。
阅读全文