编程完成如下要求: (1)设计一个立体图形类(CStereoShape类),并满足如下要求: 1)CStereoShape类有一个纯虚函数GetArea,能够获取立方体的表面积; 2)CStereoShape类有一个纯虚函数GetVolume,能够获取立方体的体积; (2)设计一个立方体类(CCube类),该类继承于CStereoShape类,并满足如下要求: 1)CCube类有一个带参数的构造函数,其参数分别对应于立方体的长、宽、高; 2)用一个成员函数来实现对立方体长、宽、高的设置; 3)重载CStereoShape类的GetArea和GetVolume,分别完成立方体的表面积和体积的计算。 (3)设计一个球体类(CSphere),该类继承于CStereoShape类,并满足如下要求: 1)CSphere类有一个带参数的构造函数,其参数对应于球体的半径; 2)用一个成员函数来实现对球体半径的设置; 3)重载CStereoShape类的GetArea和GetVolume,分别完成球体的表面积和体积的计算。 (4)实现一个main函数,在main函数中至少完成如下工作: 1)实例化一个CCube类的对象a_cube和CSphere类的对象c_sphere; 2)定义一个CStereoShape类的指针p; 3)将a_cube的长、宽和高分别设置为4、5和6;将p指向a_cube,通过p将a_cube的表面积和体积打印到屏幕上; 4)将c_sphere的半径设置为7;将p指向c_sphere,通过p将c_sphere的表面积和体积打印到屏幕上。
时间: 2024-02-09 12:11:25 浏览: 205
好的,这是一个关于面向对象编程的问题,需要设计类和继承,下面是代码实现:
```c++
#include <iostream>
using namespace std;
const double PI = 3.14159265358979323846; // 定义圆周率
class CStereoShape {
public:
virtual double GetArea() = 0; // 获取表面积的纯虚函数
virtual double GetVolume() = 0; // 获取体积的纯虚函数
};
class CCube : public CStereoShape {
private:
double length, width, height; // 长、宽、高
public:
CCube(double l = 0, double w = 0, double h = 0) : length(l), width(w), height(h) {} // 带参数的构造函数
void SetLength(double l) { length = l; } // 设置长
void SetWidth(double w) { width = w; } // 设置宽
void SetHeight(double h) { height = h; } // 设置高
double GetArea() override { // 重载获取表面积的函数
return 2 * (length * width + width * height + height * length);
}
double GetVolume() override { // 重载获取体积的函数
return length * width * height;
}
};
class CSphere : public CStereoShape {
private:
double radius; // 半径
public:
CSphere(double r = 0) : radius(r) {} // 带参数的构造函数
void SetRadius(double r) { radius = r; } // 设置半径
double GetArea() override { // 重载获取表面积的函数
return 4 * PI * radius * radius;
}
double GetVolume() override { // 重载获取体积的函数
return 4 * PI * radius * radius * radius / 3;
}
};
int main() {
CCube a_cube(4, 5, 6); // 实例化一个 CCube 类的对象 a_cube
CSphere c_sphere(7); // 实例化一个 CSphere 类的对象 c_sphere
CStereoShape* p = nullptr; // 定义一个 CStereoShape 类的指针 p
p = &a_cube; // 将 p 指向 a_cube
cout << "The area of cube is: " << p->GetArea() << endl; // 通过 p 输出 a_cube 的表面积
cout << "The volume of cube is: " << p->GetVolume() << endl; // 通过 p 输出 a_cube 的体积
p = &c_sphere; // 将 p 指向 c_sphere
cout << "The area of sphere is: " << p->GetArea() << endl; // 通过 p 输出 c_sphere 的表面积
cout << "The volume of sphere is: " << p->GetVolume() << endl; // 通过 p 输出 c_sphere 的体积
return 0;
}
```
输出结果如下:
```
The area of cube is: 148
The volume of cube is: 120
The area of sphere is: 615.752
The volume of sphere is: 1436.76
```
阅读全文