网站建设需要什么硬件,制作网站报价单,中法电商网站建设,备案时的网站建设方案书题目内容#xff1a;
编写程序#xff0c;声明抽象基类Shape#xff0c;由它派生出3个派生类#xff1a;Circle、Rectangle、Triangle#xff0c;用虚函数分别计算图形面积#xff0c;并求它们的和。要求用基类指针数组#xff0c;使它每一个元素指向一个派生类对象。 …题目内容
编写程序声明抽象基类Shape由它派生出3个派生类Circle、Rectangle、Triangle用虚函数分别计算图形面积并求它们的和。要求用基类指针数组使它每一个元素指向一个派生类对象。
输出样例如下如图
代码如下
#include iostream
#include cmath
using namespace std;class Shape
{
public:virtual double Area() 0;virtual ~Shape() {}
};class Circle : public Shape
{
private:double radius;
public:Circle(double r) : radius(r) {}virtual double Area(){return 3.14 * radius * radius;}
};class Rectangle : public Shape
{
private:double width, height;
public:Rectangle(double w, double h) : width(w), height(h) {}virtual double Area(){return width * height;}
};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;}
};int main()
{Shape* shapes[3];shapes[0] new Circle(5.0);shapes[1] new Rectangle(4.0, 6.0);shapes[2] new Triangle(3.0, 4.0);double totalArea 0.0;for (int i 0; i 3; i){totalArea shapes[i]-Area();cout Shape i 1 面积为: shapes[i]-Area() endl;}cout 总面积为: totalArea endl;return 0;
}
这段 C 代码实现了一个简单的面向对象程序用于计算不同形状圆形、矩形、三角形的面积以及它们的总面积。下面将对代码进行详细解释 1. 抽象基类Shape类的定义 virtual double Area() 0;这是一个纯虚函数意味着Shape类是一个抽象基类不能实例化对象。所有继承自Shape的派生类都必须实现这个Area函数用于计算各自形状的面积。virtual ~Shape() {}虚析构函数确保在通过基类指针删除派生类对象时能够正确调用派生类的析构函数避免内存泄漏。 2. 派生类Circle的定义 class Circle : public ShapeCircle类继承自Shape类使用public继承方式意味着Shape类的公有成员在Circle类中仍然是公有的。double radius;私有成员变量用于存储圆的半径。Circle(double r) : radius(r) {}构造函数用于初始化圆的半径。virtual double Area()重写基类的纯虚函数Area实现计算圆面积的功能圆的面积公式为这里取 3.14。 3. 派生类Recently的定义 class Rectangle : public ShapeRectangle类继承自Shape类。double width, height;私有成员变量分别存储矩形的宽度和高度。Rectangle(double w, double h) : width(w), height(h) {}构造函数用于初始化矩形的宽度和高度。virtual double Area()重写基类的纯虚函数Area实现计算矩形面积的功能。 4. 派生类Triangle的定义 class Triangle : public ShapeTriangle类继承自Shape类。double base, height;私有成员变量分别存储三角形的底和高。Triangle(double b, double h) : base(b), height(h) {}构造函数用于初始化三角形的底和高。virtual double Area()重写基类的纯虚函数Area实现计算三角形面积的功能。 5. 主函数 Shape* shapes[3];定义一个基类指针数组用于存储不同形状对象的指针。shapes[0] new Circle(5.0);、shapes[1] new Rectangle(4.0, 6.0);、shapes[2] new Triangle(3.0, 4.0);使用new运算符动态创建Circle、Rectangle和Triangle对象并将它们的指针存储在shapes数组中。double totalArea 0.0;用于存储所有形状的总面积。for (int i 0; i 3; i)遍历shapes数组调用每个形状对象的Area函数计算面积并累加到totalArea中同时输出每个形状的面积。cout 总面积为: totalArea endl;输出所有形状的总面积。 觉得有帮助就给博主点个关注叭~~
有问题的可以私信或者在评论区一起交流
友友们一起加油叭QAQ