第十四周项目四立体类族共有的抽象类

/*
* 程序的版权和版本声明部分
* Copyright (c)2014, 烟台大学计算机学院学生
* All rightsreserved.
* 文件名称: array.cpp
* 作    者:
* 完成日期: 2014 年 05 月 27 日
* 版本号: v1.0
* 问题描述:
设计一个抽象类CSolid,含有用于求表面积及体积的两个纯虚函数。
设计派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。在main()函数中,
定义CSolid *p;(p是指向基类的指针,且这个基类是个抽象类)。要求利用这个p指针,
能够求出正方体、球体及圆柱体对象的表面积及体积。
*/
#include <iostream>
#include <Cmath>
#define  PI   3.14159
using namespace std;

class  CSolid
{
public:
    virtual double area() const =0;
    virtual double volume() const =0;

};


class  CCube: public  CSolid  //正方体
{
private:
    double a;
public:
    CCube(double x):a(x) {}
    double area() const
    {
        return (6*a*a);
    }
    double volume() const
    {
        return  (a*a*a);
    }
    ~CCube() {}

};


class  CBall : public CSolid   //球体
{
private:
    double r;
public:
    CBall(double x):r(x) {}
    double area()const
    {
        return (4*PI*r*r);
    }
    double volume()const
  {
    double  v=r*r*r;
    return ((4*PI*v)/3);
  }
    ~CBall(){}
};



 class CCylinder :public CSolid    //圆柱体
{
   private:
      double r,h;
   public:
     CCylinder(double x,double y):r(x),h(y){}
    double area()const
    {
       double  c=2*PI*r*h;
       double  cy=4*PI*r;
       return  (c+cy);
    }
    double volume()const
    {
        return  (h*PI*r*r);
    }
    ~CCylinder() {}
};

int main()
{
    CSolid *p;

    CCube c1(5.0);
    p=&c1;
    cout<<"正方体的体积为:"<<p->area()<<endl;
    cout<<"正体的表面积为:"<<p->volume()<<endl;

    CBall c2(4.0);
    p=&c2;
    cout<<"球体的体积为:"<<p->area()<<endl;
    cout<<"球体的表面积为:"<<p->volume()<<endl;

    CCylinder c3(4.0,5.0);
    p=&c3;
    cout<<"圆柱体的体积为:"<<p->area()<<endl;
    cout<<"圆柱体的表面积为:"<<p->volume()<<endl;
    return 0;
}


心得:千辛万苦啊。。。。

               基类后有const的后面派生类里面都要加!!!!

              p->。。。

            *p.。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值