1. 编写一个程序计算“正方形、圆形”两种图形的面积,要求: (1)抽象出一个基类Shape; (2)在其中说明一个虚函数用来求面积; (3)利用派生类定义“正方形、圆形”,并求出这两种图形的面积。 (4)编写主函数测试以上代码,要求以多态来实现。
时间: 2024-03-25 11:36:58 浏览: 59
编程求解矩形和圆面积。
好的,下面是代码实现:
```c++
#include <iostream>
using namespace std;
class Shape {
public:
virtual double getArea() = 0; // 抽象出一个虚函数用来求面积
};
class Square : public Shape {
private:
double side;
public:
Square(double s) : side(s) {}
double getArea() {
return side * side;
}
};
class Circle : public Shape {
private:
double radius;
public:
const double PI = 3.14159265358979323846;
Circle(double r) : radius(r) {}
double getArea() {
return PI * radius * radius;
}
};
int main() {
Shape* shape1 = new Square(5); // 利用多态来实现
Shape* shape2 = new Circle(2.5);
cout << "正方形的面积为:" << shape1->getArea() << endl;
cout << "圆形的面积为:" << shape2->getArea() << endl;
delete shape1; // 释放动态内存
delete shape2;
return 0;
}
```
在代码中,我们抽象出一个基类`Shape`,并在其中定义一个纯虚函数`getArea()`,以便在派生类中重写该函数。然后,我们定义了两个派生类`Square`和`Circle`,分别表示正方形和圆形,并重写了`getArea()`函数。在`main()`函数中,我们利用多态的特性,用基类指针来分别指向一个正方形对象和一个圆形对象,并调用它们的`getArea()`函数,输出它们的面积。
输出结果为:
```
正方形的面积为:25
圆形的面积为:19.6349
```
其中,正方形的边长为5,面积为25;圆形的半径为2.5,面积为$2.5^2\pi=19.6349$,与我们预期的结果相符。
阅读全文