请用串c++语言设计一个程序:1.设计抽象基类Shape类 2.由Shape类派生出Circle圆类,Rectangle矩形类,Triangle三角形类 3.用函数printArea分别实现圆类、矩形类、三角形类的面积 4.用基类Shape类的指针输出圆类、矩形类、三角形类的面积
时间: 2024-03-10 16:44:45 浏览: 66
设计一个Shape接口和它的两个实现类Square和Circle,要求如下
好的,下面是用 C++ 语言实现的代码:
```c++
#include <iostream>
using namespace std;
// 抽象基类 Shape
class Shape {
public:
virtual void printArea() = 0; // 纯虚函数
virtual ~Shape() {} // 虚析构函数
};
// Circle 圆类
class Circle : public Shape {
public:
Circle(double r) : r(r) {}
void printArea() {
double area = 3.14 * r * r;
cout << "圆的面积为:" << area << endl;
}
private:
double r;
};
// Rectangle 矩形类
class Rectangle : public Shape {
public:
Rectangle(double a, double b) : a(a), b(b) {}
void printArea() {
double area = a * b;
cout << "矩形的面积为:" << area << endl;
}
private:
double a, b;
};
// Triangle 三角形类
class Triangle : public Shape {
public:
Triangle(double a, double h) : a(a), h(h) {}
void printArea() {
double area = 0.5 * a * h;
cout << "三角形的面积为:" << area << endl;
}
private:
double a, h;
};
int main() {
// 使用基类 Shape 指针数组,存储不同的派生类对象
Shape* shapes[] = { new Circle(2), new Rectangle(2, 3), new Triangle(2, 3) };
// 遍历指针数组,分别输出各个派生类对象的面积
for (int i = 0; i < 3; i++) {
shapes[i]->printArea();
delete shapes[i]; // 释放内存,调用虚析构函数
}
return 0;
}
```
输出结果为:
```
圆的面积为:12.56
矩形的面积为:6
三角形的面积为:3
```
希望这个答案能够解决您的问题。
阅读全文