1.设计一个图形类(Shape),由它派生出三角形类(Triangle)、正方形类(Square)、圆形类(Circle),利用虚函数计算图形面积,并在主函数中进行测试。
时间: 2023-11-27 21:55:36 浏览: 160
设计一个抽象类图形类,在该类中包含有至少两个抽象方法求周长和求面积,分别定义圆形类、长方形类、正方形类、三角形类来继承图形类,并实现上述两个方法
5星 · 资源好评率100%
下面是一个简单的实现:
```c++
#include <iostream>
using namespace std;
class Shape {
public:
virtual double area() { return 0; }
};
class Triangle : public Shape {
public:
Triangle(double b, double h) : base(b), height(h) {}
double area() override { return 0.5 * base * height; }
private:
double base;
double height;
};
class Square : public Shape {
public:
Square(double s) : side(s) {}
double area() override { return side * side; }
private:
double side;
};
class Circle : public Shape {
public:
Circle(double r) : radius(r) {}
double area() override { return 3.14159 * radius * radius; }
private:
double radius;
};
int main() {
Shape* shapes[3];
shapes[0] = new Triangle(4.0, 5.0);
shapes[1] = new Square(6.0);
shapes[2] = new Circle(3.0);
for (int i = 0; i < 3; i++) {
cout << "Shape " << i+1 << " area: " << shapes[i]->area() << endl;
delete shapes[i];
}
return 0;
}
```
在这个实现中,我们定义了一个抽象基类 `Shape` 和三个派生类 `Triangle`、`Square` 和 `Circle`。每个类都实现了 `area()` 函数,用于计算它们的面积。在 `main()` 函数中,我们创建了一个 `Shape` 类型的数组,并为其分别赋值为不同的派生类对象。然后我们遍历该数组并打印每个对象的面积。最后我们使用 `delete` 删除每个对象的内存。
阅读全文