第13周项目3-立体类组共有的抽象类

/*
*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;
}


运行结果:

知识点总结:

学会定义抽象类。

猜你喜欢

转载自blog.csdn.net/yantaidaxuecjj/article/details/46346315