(1)定义一个基类Shape,在ShowArea函数声明前冠以virtual使其成为虚函数,并且能够在派生类中重定义。 (2)定义三个派生类Circle、Rectangle、Triangle,并公有继承Shape基类。 (3)在主函数中分别调用三个派生类的ShowArea函数,求出各个形状的面积。 (4)定义一个基类指针数组p[3] ={&A,&B,&C},通过->访问派生类对象的成员函数ShowArea。
时间: 2024-03-23 07:40:31 浏览: 38
好的,以下是代码实现:
```cpp
#include <iostream>
using namespace std;
class Shape {
public:
virtual void ShowArea() { cout << "Area: 0" << endl; } // 定义虚函数
};
class Circle : public Shape {
public:
void ShowArea() { cout << "Area of Circle: " << 3.14 * r * r << endl; }
private:
double r = 3.0;
};
class Rectangle : public Shape {
public:
void ShowArea() { cout << "Area of Rectangle: " << l * w << endl; }
private:
double l = 4.0, w = 5.0;
};
class Triangle : public Shape {
public:
void ShowArea() { cout << "Area of Triangle: " << 0.5 * b * h << endl; }
private:
double b = 6.0, h = 8.0;
};
int main() {
Circle A;
Rectangle B;
Triangle C;
A.ShowArea();
B.ShowArea();
C.ShowArea();
Shape* p[3] = { &A, &B, &C };
for (int i = 0; i < 3; i++) {
p[i]->ShowArea();
}
return 0;
}
```
输出结果为:
```
Area of Circle: 28.26
Area of Rectangle: 20
Area of Triangle: 24
Area of Circle: 28.26
Area of Rectangle: 20
Area of Triangle: 24
```