c++1.设计抽象基类Shape类 2.由Shape类派生出Circle圆类,Rectangle矩形类,Triangle三角形类 3.用函数printArea分别实现圆类、矩形类、三角形类的面积 4.用基类Shape类的指针输出圆类、矩形类、三角形类的面积
时间: 2024-03-07 15:49:04 浏览: 62
好的,这是一个关于面向对象编程的问题。以下是代码实现:
```c++
#include <iostream>
#include <cmath>
using namespace std;
class Shape {
public:
virtual double area() = 0; // 定义纯虚函数
};
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) : radius(r) {}
virtual double area() {
return M_PI * radius * radius;
}
};
class Rectangle : public Shape {
private:
double width, height;
public:
Rectangle(double w, double h) : width(w), height(h) {}
virtual double area() {
return width * height;
}
};
class Triangle : public Shape {
private:
double base, height;
public:
Triangle(double b, double h) : base(b), height(h) {}
virtual double area() {
return 0.5 * base * height;
}
};
void printArea(Shape* shape) {
cout << "面积为:" << shape->area() << endl;
}
int main() {
Circle circle(5);
Rectangle rectangle(4, 6);
Triangle triangle(3, 8);
printArea(&circle);
printArea(&rectangle);
printArea(&triangle);
return 0;
}
```
这段代码中,我们定义了一个抽象基类`Shape`,其中包含了一个纯虚函数`area()`。由`Shape`类派生出`Circle`、`Rectangle`和`Triangle`三个具体的形状类,并且实现了它们的`area()`方法。我们还定义了一个`printArea()`函数,用于输出一个形状的面积。最后,我们进行了一些简单的测试,分别输出了三种形状的面积,并且使用`Shape`类的指针输出了它们的面积。
注意,在定义抽象基类时,我们使用了`virtual`关键字和`= 0`来定义纯虚函数,这是C++中实现抽象类的方法。一个抽象类不能被实例化,只能被用作其他类的基类。抽象类的子类必须实现父类中定义的纯虚函数,否则它也会被视为抽象类。
阅读全文