13周实验报告(任务4)

来源:互联网 发布:电脑 双肩包 女 知乎 编辑:程序博客网 时间:2024/06/06 14:19

任务描述:

/*【任务】设计一个抽象类CSolid,含有两个求表面积及体积的纯虚函数。设计个派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。在main()函数中,定义基类的指针p(CSolid *p;),利用p指针,输出正方体、球体及圆柱体对象的表面积及体积。*/


源程序及其运行结果:

#include<iostream>#define pi 3.14using namespace std;class CSolid{public:virtual double Area()  = 0;virtual double Volume()  = 0;};class CCube:public CSolid{private:double side;public:CCube(double s):side(s){};double Area();double Volume();};double CCube::Area() {return(6*side*side);}double CCube::Volume(){return (side *side *side);}class CBall:public CSolid{private:double Ball_R;public:CBall(double br):Ball_R(br){};double Area();double Volume();};double CBall::Area(){return(4 * pi * Ball_R * Ball_R);}double CBall::Volume(){return((4 * pi * Ball_R * Ball_R * Ball_R)/ 3);}class CCylinder:public CSolid{private:double high;double radius;public:CCylinder(double r,double h):radius(r),high(h){};double Area();double Volume();};double CCylinder::Area(){return((2* pi* radius* radius)+(2* pi * radius *high));}double CCylinder::Volume(){return(pi* radius *radius *high);}int main(){CSolid *p;     double s,v;      CCube x(30);     cout<<"立方体边长为"<<endl;      p=&x;      s=p->Area( );    v=p->Volume( );      cout<<"表面积:"<<s<<endl;      cout<<"体积:"<<v<<endl;      cout<<endl;      CBall y(4.5);      cout<<"球体半径为.5"<<endl;      p=&y;      s=p->Area( );      v=p->Volume( );      cout<<"表面积:"<<s<<endl;      cout<<"体积:"<<v<<endl;      cout<<endl;      CCylinder z(10,20);      cout<<"圆柱体底面半径、高分别为, 20"<<endl;     p=&z;      s=p->Area( );      v=p->Volume( );      cout<<"表面积:"<<s<<endl;      cout<<"体积:"<<v<<endl;      cout<<endl; system("pause");return 0;}运行结果:立方体边长为30表面积:5400体积:27000球体半径为4.5表面积:254.34体积:381.51圆柱体底面半径、高分别为10, 20表面积:1884体积:6280请按任意键继续. . .


 

知识积累:

1.熟悉抽象类的使用和过程中的关键点

2.在main函数中通过使用指针,调用不同的成员函数,熟悉基类和派生类的关系。

原创粉丝点击