/*
*copyright (c)2015,烟台大学计算机学院
*All rights reserved
*文件名称:project.cpp
*作者:孙春红
*完成日期:2015年6月3日
*版本号:v1.0
*
*问题描述:设计一个抽象类CSolid,含有用于求表面积及体积的两
个纯虚函数。设计派生类CCube、CBall、CCylinder,分别表示正方体、
球体及圆柱体。在main()函数中,定义CSolid *p;
(p是指向基类的指针,且这个基类是个抽象类)。要求利用这个p
指针,能够求出正方体、球体及圆柱体对象的表面积及体积。
*输入描述:略。
*程序输出:略。
*/
#include "iostream"
using namespace std;
class CSolid
{
public:
virtual double area() const =0;
virtual double volume()const =0;
};
class CCube:public CSolid
{
private:
double length;
public :
CCube(double l):length(l){}
virtual double area()const
{
return length*length*6;
}
virtual double volume ()const
{
return length*length*length;
}
};
class CBall:public CSolid
{
private:
double radius;
public :
CBall(double r):radius (r){}
virtual double area()const
{
return 4*3.14*radius*radius;
}
virtual double volume()const
{
return ((4*3.14*radius *radius *radius )/3);
}
};
class CCylinder:public CSolid
{
private :
double high;
double radius;
public:
CCylinder(double h,double r):high(h),radius(r){}
virtual double area()const
{
return ((2*3.14*radius*high)+3.14*radius*radius);
}
virtual double volume()const
{
return 3.14*radius*radius *high;
}
};
int main()
{
CSolid *p;
CCube c(4);
p=&c;
cout<<"正方体的表面积是:"<<p->area()<<endl;
cout<<"正方体的体积是:"<<p->volume()<<endl;
CBall cb(1);
p=&cb;
cout<<"球体的表面积是:"<<p->area()<<endl;
cout<<"球体的体积是:"<<p->volume()<<endl;
CCylinder cy(4,2);
p=&cy;
cout<<"圆柱体的表面积是:"<<p->area()<<endl;
cout<<"圆柱体的体积是:"<<p->volume()<<endl;
}
运行结果:
知识点总结:
学会定义抽象类。