C++:抽象类习题
题目内容:
求正方体、球、圆柱的表面积,抽象出一个公共的基类Container为抽象类,在其中定义一个公共的数据成员radius(此数据可以作为正方形的边长、球的半径、圆柱体底面圆半径),以及求表面积的纯虚函数area()。由此抽象类派生出要描述的三个类,利用基类指针和虚函数,分别计算三种图形的表面积。
输出样例如图:
代码如下:
#include <iostream>
#include <cmath>
using namespace std;
class Container
{
protected:
double radius;
public:
Container(double r) : radius(r) {}
virtual double area() = 0;
};
class Square : public Container
{
public:
Square(double r) : Container(r) {}
double area()
{
return 6 * radius * radius;
}
};
class Ball : public Container
{
public:
Ball(double r) : Container(r) {}
double area()
{
return 4 * 3.14 * radius * radius;
}
};
class Cylinder : public Container
{
private:
double height;
public:
Cylinder(double r, double h) : Container(r), height(h) {}
double area()
{
return 2 * 3.14 * radius * (radius + height);
}
};
int main()
{
Square cube(3.0);
Ball sphere(4.0);
Cylinder cylinder(5.0, 6.0);
cout << "正方体面积为: " << cube.area() << endl;
cout << "球面积为: " << sphere.area() << endl;
cout << "圆柱体面积为: " << cylinder.area() << endl;
return 0;
}
这段 C++ 代码定义了一个抽象基类Container
,以及它的三个派生类Square
(正方体)、Ball
(球)和Cylinder
(圆柱体),用于计算这三种几何体的表面积。最后在main
函数中创建了这三种几何体的对象,并输出它们的表面积。以下是对代码的详细解释:
1. 抽象基类Container的定义
protected: double radius;
:定义一个受保护的成员变量radius
,用于存储几何体的相关半径信息。受保护的成员变量可以在派生类中访问。Container(double r) : radius(r) {}
:构造函数,用于初始化radius
成员变量。virtual double area() = 0;
:纯虚函数,用于计算几何体的表面积。由于它是纯虚函数,所以Container
类是抽象类,不能实例化对象。派生类必须实现这个函数。2. 派生类Square的定义
class Square : public Container
:Square
类继承自Container
类,使用public
继承方式,意味着基类的public
和protected
成员在派生类中保持原有的访问权限。Square(double r) : Container(r) {}
:构造函数,调用基类的构造函数来初始化radius
成员变量。double area()
:实现基类的纯虚函数area()
,用于计算正方体的表面积。3. 派生类Ball的定义
class Ball : public Container
:Ball
类继承自Container
类。Ball(double r) : Container(r) {}
:构造函数,调用基类的构造函数来初始化radius
成员变量。double area()
:实现基类的纯虚函数area()
,用于计算球的表面积。4. 派生类Cylinder的 定义
class Cylinder : public Container
:Cylinder
类继承自Container
类。private: double height;
:定义一个私有成员变量height
,用于存储圆柱体的高度。Cylinder(double r, double h) : Container(r), height(h) {}
:构造函数,调用基类的构造函数来初始化radius
成员变量,并初始化height
成员变量。double area()
:实现基类的纯虚函数area()
,用于计算圆柱体的表面积。5. 主函数
- 创建
Square
、Ball
和Cylinder
类的对象,并分别初始化它们的半径和高度。- 调用每个对象的
area()
函数计算表面积,并使用cout
输出结果。
觉得有帮助就给博主点个关注叭~~
有问题的可以私信或者在评论区一起交流
友友们一起加油叭QAQ