1.设计抽象基类Shape类 2.由Shape类派生出Circle圆类, Rectangle矩形类, Triangle三角形 3.用函数printArea分别实现圆类、矩形类、三角形类的面积4.用基类Shape类的指针输出圆类、矩形类、三角形类的面积
时间: 2024-03-24 12:35:52 浏览: 58
c++ 形状类Shape(派生出圆类Circle和矩形类Rectangle)
好的,这里提供一份C++的代码示例,供你参考:
```cpp
#include <iostream>
using namespace std;
// Shape类是一个抽象基类,定义了纯虚函数getArea,表示计算面积
class Shape {
public:
virtual double getArea() = 0; // 纯虚函数,必须在子类中实现
};
// Circle类继承自Shape类,表示圆形
class Circle : public Shape {
public:
Circle(double r) : radius(r) {} // 构造函数,初始化半径
double getArea() { return 3.14 * radius * radius; } // 实现Shape类中的纯虚函数
private:
double radius; // 圆的半径
};
// Rectangle类继承自Shape类,表示矩形
class Rectangle : public Shape {
public:
Rectangle(double w, double h) : width(w), height(h) {} // 构造函数,初始化宽和高
double getArea() { return width * height; } // 实现Shape类中的纯虚函数
private:
double width; // 矩形的宽
double height; // 矩形的高
};
// Triangle类继承自Shape类,表示三角形
class Triangle : public Shape {
public:
Triangle(double w, double h) : base(w), height(h) {} // 构造函数,初始化底和高
double getArea() { return 0.5 * base * height; } // 实现Shape类中的纯虚函数
private:
double base; // 三角形的底
double height; // 三角形的高
};
// printArea函数用于输出各个形状的面积
void printArea(Shape* shape) {
cout << "面积为:" << shape->getArea() << endl;
}
int main() {
// 创建各个形状的对象
Circle circle(5);
Rectangle rectangle(3, 4);
Triangle triangle(2, 5);
// 分别输出各个形状的面积
printArea(&circle);
printArea(&rectangle);
printArea(&triangle);
return 0;
}
```
在这段代码中,我们先定义了一个抽象基类Shape,其中有一个纯虚函数getArea,表示计算面积。然后,我们从Shape类派生出了Circle圆类、Rectangle矩形类和Triangle三角形类,这些子类都重写了getArea函数来计算各自的面积。最后,我们定义了一个printArea函数,用于输出各个形状的面积。在main函数中,我们创建了各个形状的对象,并分别调用printArea函数来输出它们的面积。注意,这里使用了基类Shape的指针来调用printArea函数,这就体现了多态的特性。
阅读全文