利用多态性编程,实现求三角形、正方形和圆形面积。方法:抽象出一个共享父类,定义一函数为求面积的公共界面,再重新定义各形状的求面积函数。在主类中创建不同类的对象,并求得不同形状的面积
时间: 2023-05-03 22:02:00 浏览: 173
该问题要求使用多态性编程,实现求三角形、正方形和圆形面积的方法。方法是:抽象出一个共享父类,定义一个函数为求面积的公共界面,再重新定义各形状的求面积函数。在主类中创建不同类的对象,并求得不同形状的面积函数。在创建不同类的对象时,要求得不同形状的面积函数具有不同的参数。
相关问题
C++编写一个程序计算三角形、正方形和圆形的面积。 要求: 利用多态性,建立抽象类Shape,并建立其对象指针,实现三角形、正方形和圆形的面积计算。
好的,以下是实现上述要求的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()函数计算面积并输出。最后释放内存。
阅读全文