1.编写一个程序计算三角形、正方形和圆形的面积,要求抽象出一个基类base,在其中说明一个虚函数,用来求面积,并利用单接口,多实现版本设计各图形面积的方法。
时间: 2024-04-30 14:20:07 浏览: 161
设计一个抽象类图形类,在该类中包含有至少两个抽象方法求周长和求面积,分别定义圆形类、长方形类、正方形类、三角形类来继承图形类,并实现上述两个方法
5星 · 资源好评率100%
以下是基于C++的实现:
```cpp
#include <iostream>
using namespace std;
class base { // 基类
public:
virtual float area() = 0; // 纯虚函数
};
class triangle : public base { // 三角形类
private:
float height;
float base;
public:
triangle(float h, float b) {
height = h;
base = b;
}
float area() { // 重写虚函数
return 0.5 * height * base;
}
};
class square : public base { // 正方形类
private:
float side;
public:
square(float s) {
side = s;
}
float area() { // 重写虚函数
return side * side;
}
};
class circle : public base { // 圆形类
private:
float radius;
public:
circle(float r) {
radius = r;
}
float area() { // 重写虚函数
return 3.14159 * radius * radius;
}
};
int main() {
base *shapes[3]; // 定义基类指针数组
shapes[0] = new triangle(5, 10); // 存储三角形对象
shapes[1] = new square(6); // 存储正方形对象
shapes[2] = new circle(4); // 存储圆形对象
for (int i = 0; i < 3; i++) {
cout << "Shape " << i+1 << " area: " << shapes[i]->area() << endl; // 调用虚函数计算面积
}
return 0;
}
```
上述程序中,定义了一个基类`base`,其中包含一个纯虚函数`area()`,该函数用于计算形状的面积。然后分别定义了三个派生类`triangle`、`square`和`circle`,并重写了虚函数`area()`,分别计算三角形、正方形和圆形的面积。
在`main()`函数中,定义了一个基类指针数组`shapes`,并存储三个形状对象。然后通过循环调用虚函数`area()`计算每个形状的面积并输出。
阅读全文