用c++编程定义一个抽象类Shape,有2个纯虚函数计算体积和表面积:calVolume()和calArea(),返回值为double型。由Shape类派生出3种几何图形:正方体类,球体类和圆柱体类,各自新增的数据成员均为double型。 对于calVolume()和calArea(),每一个定义两个普通的重载函数:返回值均为void,形参分别是抽象类的对象指针、抽象类的对象引用,在函数中通过指针或引用调用虚函数calArea()或者calVolume(),输出结果。 在main函数中,进行测试,必须包含重载函数的测试。PI:3.1415926并逐句解释代码
时间: 2024-02-23 10:00:26 浏览: 81
Java:使用抽象类定义一个“形状类”,能够计算周长和面积。
好的,以下是你的问题的答案:
```c++
#include<iostream>
using namespace std;
const double PI = 3.1415926;
// 抽象类 Shape
class Shape {
public:
virtual double calVolume() const = 0; // 纯虚函数,计算体积
virtual double calArea() const = 0; // 纯虚函数,计算表面积
};
// 正方体类 Cube
class Cube : public Shape {
public:
Cube(double a) : a_(a) {} // 构造函数
double calVolume() const override { return a_ * a_ * a_; } // 体积计算函数
double calArea() const override { return a_ * a_ * 6.0; } // 表面积计算函数
private:
double a_; // 正方体边长
};
// 球体类 Sphere
class Sphere : public Shape {
public:
Sphere(double r) : r_(r) {} // 构造函数
double calVolume() const override { return 4.0 / 3.0 * PI * r_ * r_ * r_; } // 体积计算函数
double calArea() const override { return 4.0 * PI * r_ * r_; } // 表面积计算函数
private:
double r_; // 球体半径
};
// 圆柱体类 Cylinder
class Cylinder : public Shape {
public:
Cylinder(double r, double h) : r_(r), h_(h) {} // 构造函数
double calVolume() const override { return PI * r_ * r_ * h_; } // 体积计算函数
double calArea() const override { return 2.0 * PI * r_ * (r_ + h_); } // 表面积计算函数
private:
double r_; // 圆柱体半径
double h_; // 圆柱体高度
};
// 计算体积的重载函数
void calVolume(const Shape* shape) {
cout << "体积为:" << shape->calVolume() << endl;
}
void calVolume(const Shape& shape) {
cout << "体积为:" << shape.calVolume() << endl;
}
// 计算表面积的重载函数
void calArea(const Shape* shape) {
cout << "表面积为:" << shape->calArea() << endl;
}
void calArea(const Shape& shape) {
cout << "表面积为:" << shape.calArea() << endl;
}
int main() {
// 定义正方体、球体、圆柱体对象
Cube cube(2.0);
Sphere sphere(3.0);
Cylinder cylinder(2.0, 5.0);
// 对象指针调用重载函数
calVolume(&cube);
calArea(&cube);
calVolume(&sphere);
calArea(&sphere);
calVolume(&cylinder);
calArea(&cylinder);
// 对象引用调用重载函数
calVolume(cube);
calArea(cube);
calVolume(sphere);
calArea(sphere);
calVolume(cylinder);
calArea(cylinder);
return 0;
}
```
这是一个使用 C++ 编程语言编写的程序,通过定义抽象类 Shape 及其三个派生类 Cube、Sphere 和 Cylinder 来实现计算几何图形的体积和表面积。其中,Shape 类中定义了两个纯虚函数 calVolume() 和 calArea(),分别用于计算体积和表面积。三个派生类 Cube、Sphere 和 Cylinder 分别继承了 Shape 类,并在其内部实现了纯虚函数。程序中还定义了四个重载函数,用于输出计算结果,包括两个使用对象指针作为参数的函数 calVolume(const Shape* shape) 和 calArea(const Shape* shape),以及两个使用对象引用作为参数的函数 calVolume(const Shape& shape) 和 calArea(const Shape& shape)。在 main 函数中,先定义了三个几何图形对象 cube、sphere 和 cylinder,然后分别使用对象指针和对象引用调用了计算体积和表面积的重载函数,输出了计算结果。
阅读全文