1.设计抽象基类Shape类 2.由Shape类派生出Circle圆类,Rectangle矩形类,Triangle三角形类 3.用函数printArea分别实现圆类、矩形类、三角形类的面积 4.用基类Shape类的指针输出圆类、矩形类、三角形类的面积
时间: 2024-03-24 17:35:58 浏览: 73
设计一个抽象类图形类,在该类中包含有至少两个抽象方法求周长和求面积,分别定义圆形类、长方形类、正方形类、三角形类来继承图形类,并实现上述两个方法
5星 · 资源好评率100%
好的,我明白了你的问题。以下是对应的C++代码:
```cpp
#include <iostream>
using namespace std;
class Shape {
public:
virtual double getArea() = 0; // 纯虚函数
};
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) : radius(r) {}
double getArea() {
return 3.14 * radius * radius;
}
};
class Rectangle : public Shape {
private:
double width;
double height;
public:
Rectangle(double w, double h) : width(w), height(h) {}
double getArea() {
return width * height;
}
};
class Triangle : public Shape {
private:
double base;
double height;
public:
Triangle(double b, double h) : base(b), height(h) {}
double getArea() {
return 0.5 * base * height;
}
};
void printArea(Shape* s) {
cout << "Area: " << s->getArea() << endl;
}
int main() {
Circle c(2.0);
Rectangle r(3.0, 4.0);
Triangle t(5.0, 6.0);
printArea(&c);
printArea(&r);
printArea(&t);
return 0;
}
```
这个程序中,我们定义了一个抽象基类`Shape`,它有一个纯虚函数`getArea()`,用于计算面积。然后我们派生出了三个类`Circle`、`Rectangle`和`Triangle`,分别用于计算圆、矩形和三角形的面积。这三个派生类都实现了`getArea()`函数,并返回相应的面积值。
接着,我们定义了一个函数`printArea()`,它的参数是指向基类`Shape`的指针。这个函数可以输出任何派生类的面积,因为我们在基类中定义了纯虚函数`getArea()`。
最后,在`main()`函数中,我们创建了一个圆对象`c`、一个矩形对象`r`和一个三角形对象`t`,并分别调用了`printArea()`函数来输出它们的面积。由于`printArea()`函数的参数是`Shape`类的指针,所以我们可以用它来输出任何继承自`Shape`类的对象的面积。
阅读全文