使用虚函数编写程序,求球体和圆柱体的体积及表面积。由于球体和圆柱体都可以看做由圆继承而来,因此,可以把圆类Circle作为基类。在Circle类中定义一个数据成员radius及两个虚函数area和volume。由Circle类派生Sphere类和Column类。在派生类中对虚函数area和volume重新定义,分别求球体和圆柱体的体积及表面积。
#include <iostream> using namespace std; const double PI=3.14159265; class circle { public: circle(double r) { radius = r; } virtual double area() { return 0.0; } virtual double volume() { return 0.0; } protected: double radius; }; class sphere:public circle { public: sphere( double r ):circle( r ){} double area() { return 4.0 * PI * radius * radius; } double volume() { return 4.0 * PI * radius * radius * radius / 3.0; } }; class column:public circle { public: column( double r,double h ):circle( r ) { height = h; } double area() { return 2.0 * PI * radius * ( height + radius ); } double volume() { return PI * radius * radius * height; } private: double height; }; int main() { circle *p; sphere sobj(2); p = &sobj; cout << "球体:" << endl; cout << "体积= " << p->volume() << endl; cout << "表面积= " << p->area() << endl; column cobj( 3,5 ); p = &cobj; cout << "圆柱体:" << endl; cout << "体积= " << p->volume() << endl; cout << "表面积= " << p->area() << endl; }
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题