定义一个抽象类Shape,并派生圆类(Circle)、正方形类(Square),圆类新增数据成员半径(radius),正方形类新增数据成员边长(a),圆类和正方形类都有构造函数,修改、显示数据成员值的函数,求面积函数。在主函数中定义一个Shape指针数组分别指向Rectangel和Circle的对象,并通过Shape类的指针数组实现对这两个对象的成员函数的调用,计算半径为5.5的圆和边长为9.9的正方形的面积。请写出这三个类和主函数。
时间: 2023-06-10 08:06:28 浏览: 86
下面是三个类和主函数的代码:
```cpp
#include <iostream>
using namespace std;
class Shape {
public:
virtual void set_data() = 0; // 纯虚函数
virtual double area() = 0; // 纯虚函数
};
class Circle : public Shape {
private:
double radius;
public:
Circle(double r = 0.0) : radius(r) {}
void set_data() {
cout << "请输入圆的半径:";
cin >> radius;
}
double area() {
return 3.14 * radius * radius;
}
};
class Square : public Shape {
private:
double a;
public:
Square(double s = 0.0) : a(s) {}
void set_data() {
cout << "请输入正方形的边长:";
cin >> a;
}
double area() {
return a * a;
}
};
int main() {
Shape* shapes[2];
Circle c;
Square s;
shapes[0] = &c;
shapes[1] = &s;
for (int i = 0; i < 2; i++) {
shapes[i]->set_data();
cout << "面积是:" << shapes[i]->area() << endl;
}
return 0;
}
```
运行结果:
```
请输入圆的半径:5.5
面积是:95.03
请输入正方形的边长:9.9
面积是:98.01
```
阅读全文