任務描述:
/*【任務】設計一個抽象類CSolid,含有兩個求表面積及體積的純虛函數。設計個派生類CCube、CBall、CCylinder,
分別表示正方體、球體及圓柱體。在main()函數中,定義基類的指針p(CSolid *p;),利用p指針,輸出正方體、球體
及圓柱體對象的表面積及體積。*/
源程序及其運行結果:
#include<iostream>
#define pi 3.14
using 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函數中通過使用指針,調用不同的成員函數,熟悉基類和派生類的關係。