写一个程序,定义抽象基类Shape,由它派生出3个派生类: Circle (圆形) Rectangle (矩形) Triangle(三角形),用一个虚函数printArea分别计算并输出以上三者的面积。3个图形的数据在定义对象时给定。
时间: 2024-03-10 20:45:09 浏览: 67
好的,下面是程序代码:
```c++
#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;
double 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;
double 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 *p;
Circle c(5);
Rectangle r(4, 6);
Triangle t(3, 8);
p = &c;
p->printArea();
p = &r;
p->printArea();
p = &t;
p->printArea();
return 0;
}
```
这个程序中,我们定义了一个抽象基类 Shape,其中包含一个纯虚函数 printArea。然后我们派生出三个具体的子类 Circle、Rectangle 和 Triangle,并分别重写了 printArea 函数。
在主函数中,我们声明了一个指向 Shape 类型的指针 p,然后分别创建了 Circle、Rectangle 和 Triangle 的对象,并通过指针 p 调用了它们的 printArea 函数,输出了各自的面积。
阅读全文