永发信息网

C++程序设计 急 急 急

答案:2  悬赏:0  手机版
解决时间 2021-05-16 00:16
  • 提问者网友:做自己de王妃
  • 2021-05-15 11:37
编写程序求正方体、球、圆柱体表面积和体积要求抽象出一个公共基类CONTAINER为抽象类在其中定义求表面积和体积的纯虚函数抽象类中定义一个公共的数据成员RADIUS作为球的半径正方体的边长圆柱底面圆半径。由CONTAINER派生出CUBE(正方体)类,SPHERE(球)类和CYLILNDER(圆柱体)在这3个类中都具有求表面积和体积重定义版本。在MAIN函数中定义正方体、球、圆柱体对象,并显示相应对象的表面积和体积。
最佳答案
  • 五星知识达人网友:鱼芗
  • 2021-05-15 12:45

代码如下,你先看看:


#include<iostream>
using namespace std;

class Container {
public:
double radius;
virtual double area() = 0; // 返回表面积结果
virtual double volume() = 0; // 返回体积结果
};

// 正方体类
class Cube : public Container {
public:
Cube(double radius) {
this->radius = radius;
}
double area() {
return (6 * radius * radius);
}
double volume() {
return (radius * radius * radius);
}
};

// 球体类
class Sphere : public Container {
public:
Sphere(double radius) {
this->radius = radius;
}
double area() {
return (4 * 3.1415 * radius * radius);
}
double volume() {
return (4 * 3.1415 * radius * radius * radius / 3);
}
};

// 圆柱体类
class Cylilnder : public Container {
public:
Cylilnder(double radius) {
this->radius = radius;
}
double area() {
return (2 * 3.1415 * radius * radius + 2 * 3.1415 * radius * radius);
}
double volume() {
return (3.1415 * radius * radius * radius);
}
};

int main() {
Container *cube = new Cylilnder(1.0);
cout << cube->area() << " --- " << cube->volume() << endl;
return 0;
}
// main函数里面用到多态,可将Cylilnder换成任意子类类名

全部回答
  • 1楼网友:拾荒鲤
  • 2021-05-15 13:03



int main() {
Container *cube = new Cylilnder(1.0);
cout << cube->area() << " --- " << cube->volume() << endl;

Container *Shape; Cube A(5); Shape=&A; cout<<Shape->volume()<<"---"<<Shape->area()<<endl;

return 0;
}
应该是虚基类去定义一个指针后才可以指向其他派生类呀,像我的例子

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯