第十三周实验报告4
2012-05-13 11:10
344 查看
【任务4】设计一个抽象类CSolid,含有两个求表面积及体积的纯虚函数。设计个派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。在main()函数中,定义基类的指针p(CSolid *p;),利用p指针,输出正方体、球体及圆柱体对象的表面积及体积。
正方体的边长:4
正方体的体积:64
正方体的表面积:128
球的半径:4
球的体积:201.056
圆柱体的半径:4
圆柱体的高:5
圆柱的体积:251.32
圆柱的体积:226.188
请按任意键继续. . .
如果不用virtual基类就不能用派生类的成员,这样才公平
#include <iostream> #define PI 3.1415 using namespace std; class CSolid { public: virtual double area() =0; virtual double volume() =0; virtual void show() =0; }; class CCube: public CSolid { private: float Long; public: CCube( float lo ):Long(lo){} void show(); double area(); double volume(); }; class CCylinder: public CSolid { private: double Radue; double Height; public: CCylinder( float r, float gh ): Radue(r), Height(gh){} void show(); double area(); double volume(); }; class CBall: public CSolid { private: float Radue; public: CBall( float r ): Radue(r){} void show(); double area(); double volume(); }; double CCube::area() { float ar; ar = 8 * Long * Long; return ar; } double CCube::volume() { return ( Long * Long * Long ); } void CCube::show() { cout << "正方体的边长:" << Long << endl; } double CBall::area() { return( 4 * PI * Radue * Radue ); } double CBall::volume() { return ( 4/3 * PI * Radue * Radue * Radue ); } void CBall::show() { cout << "球的半径:" << Radue << endl; } double CCylinder::area() { return ( Radue * Radue * PI * Height ); } double CCylinder::volume() { return ( Radue * Radue * PI * 2 + Radue * 2 * PI * Height ); } void CCylinder::show() { cout << "圆柱体的半径:" << Radue << endl; cout << "圆柱体的高:" << Height << endl; } int main() { CSolid *p; CCube cube( 4 ); CBall ball( 4 ); CCylinder ccylinder( 4, 5 ); p = &cube; p->show(); cout << "正方体的体积:" << p->volume() << endl; cout << "正方体的表面积:" << p->area() << endl << endl; p = &ball; p->show(); cout << "球的体积:" << p->area() << endl << endl; p = &ccylinder; p->show (); cout << "圆柱的体积:" << p->area() << endl; cout << "圆柱的体积:" << p->volume() << endl; system("pause"); return 0; }
正方体的边长:4
正方体的体积:64
正方体的表面积:128
球的半径:4
球的体积:201.056
圆柱体的半径:4
圆柱体的高:5
圆柱的体积:251.32
圆柱的体积:226.188
请按任意键继续. . .
如果不用virtual基类就不能用派生类的成员,这样才公平
相关文章推荐
- 第十三周实验报告1
- 第十三周实验报告 任务二(3)
- 第十三周实验报告1.2
- 《C++第十三周实验报告4-1》---设计一个抽象类CSolid,含有两个求表面积及体积的纯虚函数。 设计个派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。
- 第十三周实验报告(一)用自己的话总结对虚函数、多态性和抽象类的理解
- 第十三周实验报告3
- 第十三周实验报告(3)
- 第十三周实验报告4
- 第十三周实验报告2修改版
- 第十三周实验报告2
- 第十三周实验报告 任务三
- 第十三周实验报告(4)
- (补)第十三周实验报告(2)
- 第十三周实验报告一
- 第十三周实验报告3
- 第十三周实验报告》报告2. (2011-11-20 16:43
- 第十三周实验报告(任务一)【虚函数、多态性、抽象类】
- 第十三周实验报告3
- 第十三周实验报告 任务四
- 第十三周实验报告4(纯虚函数--抽象类)