下列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-19 14:46:31 浏览: 65
定义一个形状类(抽象类)以及一个普通成员函数(用来重设形状大小)、两个纯虚成员函数-周长计算函数和面积计算函数
(1)从Shape类派生立方体类(Cube)、球类(Sphere),并给出具体的求体积函数和显示图形信息的函数。
```
class Cube : public Shape { // 立方体类继承自形状类
private:
double length;
public:
Cube(double l) : length(l) {}
double volume() {
return length * length * length;
}
void show() {
cout << "立方体,边长为 " << length << endl;
}
};
class Sphere : public Shape { // 球类继承自形状类
private:
double radius;
public:
Sphere(double r) : radius(r) {}
double volume() {
return 4.0 / 3 * 3.1415926535 * radius * radius * radius;
}
void show() {
cout << "球,半径为 " << radius << endl;
}
};
```
(2)写出total函数的函数体。
```
double total(Shape *s[], int n) {
double sum = 0;
for (int i = 0; i < n; i++) {
sum += s[i]->volume();
s[i]->show();
}
return sum;
}
```
(3)主函数里面建立若干派生类对象,并调用total函数求不同派生类对象的体积和。
```
int main() {
Shape *s[2];
s[0] = new Cube(2);
s[1] = new Sphere(3);
cout << "不同立体图形的体积总和为 " << total(s, 2) << endl;
return 0;
}
```
阅读全文