编写一个程序计算“三角形、正方形、圆形”三种图形的面积,要求:a) 抽象出一个基类 Base; b) 在其中说明一个虚函数用来求面积; c) 利用派生类定义“三角形、正方形、圆形”;d) 编写主函数并测试。
时间: 2023-05-11 20:02:44 浏览: 263
好的,这是一个典型的面向对象编程问题。以下是一个可能的解决方案:
```cpp
#include <iostream>
using namespace std;
class Base {
public:
virtual double getArea() = 0; // 纯虚函数,用于求面积
};
class Triangle : public Base {
public:
Triangle(double b, double h) : base(b), height(h) {}
double getArea() {
return 0.5 * base * height;
}
private:
double base, height;
};
class Square : public Base {
public:
Square(double s) : side(s) {}
double getArea() {
return side * side;
}
private:
double side;
};
class Circle : public Base {
public:
Circle(double r) : radius(r) {}
double getArea() {
return 3.1415926 * radius * radius;
}
private:
double radius;
};
int main() {
Base* shapes[3];
shapes[0] = new Triangle(3, 4);
shapes[1] = new Square(5);
shapes[2] = new Circle(2);
for (int i = 0; i < 3; i++) {
cout << "Shape " << i+1 << " area: " << shapes[i]->getArea() << endl;
delete shapes[i];
}
return 0;
}
```
在这个程序中,我们定义了一个基类 `Base`,其中包含一个纯虚函数 `getArea()`,用于求面积。然后我们定义了三个派生类 `Triangle`、`Square` 和 `Circle`,分别用于计算三角形、正方形和圆形的面积。在主函数中,我们创建了一个 `Base` 类型的数组,分别用三个派生类的对象初始化。然后我们遍历这个数组,调用每个对象的 `getArea()` 函数,输出它们的面积,并释放内存。
希望这个程序能够满足你的要求。
阅读全文