1.设计一个图形类(Shape),由它派生出三角形类(Triangle)、正方形类(Square)、圆形类(Circle),利用虚函数计算图形面积,并在主函数中进行测试。
时间: 2023-11-27 13:55:36 浏览: 94
下面是一个简单的实现:
```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` 删除每个对象的内存。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)