写一个程序,定义抽象基类 Shape, 由它派生出3个派生 类:Circle (圆形) 丶 Rectangle(矩形)。 Triangle(三角形),用一个虚 函数printArea分别计算并输出以上三者的面积。3个图形的数据在定义对象时给定。
时间: 2024-03-09 19:45:58 浏览: 74
设计一个抽象类图形类,在该类中包含有至少两个抽象方法求周长和求面积,分别定义圆形类、长方形类、正方形类、三角形类来继承图形类,并实现上述两个方法
5星 · 资源好评率100%
好的,以下是您所需的程序:
```cpp
#include <iostream>
using namespace std;
class Shape {
public:
virtual void printArea() = 0; // 纯虚函数
};
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) : radius(r) {}
void printArea() {
double area = 3.14 * radius * radius;
cout << "圆形面积为:" << area << endl;
}
};
class Rectangle : public Shape {
private:
double length, width;
public:
Rectangle(double l, double w) : length(l), width(w) {}
void printArea() {
double area = length * width;
cout << "矩形面积为:" << area << endl;
}
};
class Triangle : public Shape {
private:
double base, height;
public:
Triangle(double b, double h) : base(b), height(h) {}
void printArea() {
double area = 0.5 * base * height;
cout << "三角形面积为:" << area << endl;
}
};
int main() {
Shape* shapes[3];
shapes[0] = new Circle(5);
shapes[1] = new Rectangle(4, 6);
shapes[2] = new Triangle(3, 8);
for (int i = 0; i < 3; i++) {
shapes[i]->printArea();
}
return 0;
}
```
程序中定义了一个抽象基类Shape,它有一个纯虚函数printArea。然后定义了三个派生类Circle、Rectangle和Triangle,它们都重写了printArea函数,并分别计算输出了对应图形的面积。
在主函数中,我们定义了一个Shape类型的指针数组,并分别用Circle、Rectangle和Triangle的对象初始化了它的前三个元素。最后用循环遍历指针数组,调用每个对象的printArea函数,输出对应图形的面积。
希望能够帮到您!
阅读全文