C++编写一个程序计算三角形、正方形和圆形的面积。 要求: 利用多态性,建立抽象类Shape,并建立其对象指针,实现三角形、正方形和圆形的面积计算。
时间: 2024-03-16 17:43:33 浏览: 143
C++编写计算三角形、正方形和圆形面积程序
5星 · 资源好评率100%
好的,以下是实现上述要求的C++代码:
```
#include<iostream>
#include<cmath>
using namespace std;
//抽象类Shape
class Shape{
public:
virtual double getArea() = 0; //纯虚函数,用于计算面积
};
//三角形类Triangle,继承自Shape
class Triangle:public Shape{
private:
double a, b, c; //三角形三边长
public:
Triangle(double _a, double _b, double _c):a(_a), b(_b), c(_c){} //构造函数
double getArea(){ //重写Shape中的虚函数
double p = (a + b + c) / 2.0; //计算半周长
return sqrt(p * (p - a) * (p - b) * (p - c)); //使用海伦公式计算面积
}
};
//正方形类Square,继承自Shape
class Square:public Shape{
private:
double side; //正方形边长
public:
Square(double _side):side(_side){} //构造函数
double getArea(){ //重写Shape中的虚函数
return side * side; //计算面积
}
};
//圆形类Circle,继承自Shape
class Circle:public Shape{
private:
double r; //圆形半径
public:
Circle(double _r):r(_r){} //构造函数
double getArea(){ //重写Shape中的虚函数
return 3.14159 * r * r; //计算面积
}
};
int main(){
Shape* shape1 = new Triangle(3, 4, 5); //创建三角形对象指针
Shape* shape2 = new Square(5); //创建正方形对象指针
Shape* shape3 = new Circle(4); //创建圆形对象指针
cout << "The area of the triangle is: " << shape1->getArea() << endl; //输出三角形面积
cout << "The area of the square is: " << shape2->getArea() << endl; //输出正方形面积
cout << "The area of the circle is: " << shape3->getArea() << endl; //输出圆形面积
delete shape1; //释放内存
delete shape2;
delete shape3;
return 0;
}
```
该程序使用了多态性,通过使用抽象类Shape和虚函数实现了三角形、正方形和圆形面积的计算。在主函数中,分别创建三角形、正方形和圆形对象指针,并使用它们的getArea()函数计算面积并输出。最后释放内存。
阅读全文