下列Shape类是一个表示形状的类,类内的成员函数volume为求立体图形体积的函数,成员函数show为显示立体图形信息的函数。total则是一个普通的用以求不同立体图形的体积总和的函数。 class Shape // 形状类 {public: virtual double volume( ){cout<<”图形体积”<<endl;} // 虚函数 virtual void show( ){cout<<”输出图形信息”<<endl;} // 虚函数 }; double total(Shape *s[], int n) { …… } 要求: (1)从Shape类派生立方体类(Cube)、球类(Sphere),并给出具体的求体积函数和显示图形信息的函数。 (2)写出total函数的函数体。 (3)主函数里面建立若干派生类对象,并调用total函数求不同派生类对象的体积和。
时间: 2024-03-21 11:38:59 浏览: 14
以下是根据题目要求所编写的代码:
```c++
#include <iostream>
using namespace std;
class Shape {
public:
virtual double volume() { // 虚函数
cout << "图形体积" << endl;
}
virtual void show() { // 虚函数
cout << "输出图形信息" << endl;
}
};
class Cube : public Shape { // 立方体类
private:
double x, y, z; // 立方体的长、宽、高
public:
Cube(double x_, double y_, double z_) : x(x_), y(y_), z(z_) {}
double volume() { // 求立方体体积
cout << "立方体体积:";
return x * y * z;
}
void show() { // 显示立方体信息
cout << "立方体信息:长=" << x << " 宽=" << y << " 高=" << z << endl;
}
};
class Sphere : public Shape { // 球类
private:
double r; // 球的半径
public:
Sphere(double r_) : r(r_) {}
double volume() { // 求球体积
cout << "球体积:";
return 4.0 / 3 * 3.1415926 * r * r * r;
}
void show() { // 显示球信息
cout << "球信息:半径=" << r << endl;
}
};
double total(Shape *s[], int n) { // 求不同立体图形的体积总和
double sum = 0;
for (int i = 0; i < n; i++) {
sum += s[i]->volume();
}
return sum;
}
int main() {
Shape *s[] = { new Cube(1, 2, 3), new Sphere(4) }; // 建立两个不同的派生类对象
cout << "总体积:" << total(s, 2) << endl; // 求两个派生类对象的体积总和
return 0;
}
```
输出结果为:
```
立方体信息:长=1 宽=2 高=3
立方体体积:6
球信息:半径=4
球体积:268.082
总体积:274.082
```