编写一个C++程序,用虚函数和定义类来实现,用于计算正方形,三角形和圆的面积以及计算各类形状的总面积
时间: 2024-04-04 08:34:47 浏览: 93
好的,我可以为您提供一个使用虚函数和定义类的C++程序,用于计算正方形、三角形和圆的面积,并计算各类形状的总面积。代码如下:
```C++
#include <iostream>
#include <cmath>
using namespace std;
class Shape {
public:
virtual double area() = 0;
};
class Square : public Shape {
private:
double side;
public:
Square(double s) : side(s) {}
virtual double area() {
return side * side;
}
};
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;
}
};
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) : radius(r) {}
virtual double area() {
return M_PI * radius * radius;
}
};
double polygonArea(Shape **shapes, int n) {
double totalArea = 0;
for(int i=0; i<n; i++) {
totalArea += shapes[i]->area();
}
return totalArea;
}
int main() {
double side, base, height, radius;
Shape *shapes[3];
cout << "请输入正方形的边长:";
cin >> side;
Square square(side);
shapes[0] = □
cout << "正方形的面积为:" << square.area() << endl;
cout << "请输入三角形的底边长和高:";
cin >> base >> height;
Triangle triangle(base, height);
shapes[1] = ▵
cout << "三角形的面积为:" << triangle.area() << endl;
cout << "请输入圆的半径:";
cin >> radius;
Circle circle(radius);
shapes[2] = &circle;
cout << "圆的面积为:" << circle.area() << endl;
cout << "各类形状的总面积为:" << polygonArea(shapes, 3) << endl;
return 0;
}
```
在这个程序中,我们定义了一个Shape类作为基类,它包含一个纯虚函数area(),用于计算形状的面积。然后,我们定义了三个派生类Square、Triangle和Circle,它们分别表示正方形、三角形和圆形。这些派生类覆盖了基类的area()函数,以实现各自特定的计算面积的算法。
在主函数中,我们使用用户输入来获取各种形状的参数,并创建相应的对象。然后,我们使用一个Shape类型的指针数组将这些对象存储起来,并通过调用PolygonArea函数来计算各类形状的总面积。注意,在PolygonArea函数中,我们使用了Shape类的指针来遍历所有形状,并调用它们的area()函数来计算面积,这就是虚函数的应用场景之一。
阅读全文