第十三周项目-4-立体族类共有的抽象类

/*copyright(c)2016.烟台大学计算机学院
* All rights reserved,
* 文件名称:text.Cpp
* 作者:刘涛
* 完成日期:2016年5月22日
* 版本号:vc++6.0
0*问题描述:设计一个抽象类CSolid,含有用于求表面积及体积的两个纯虚函数。
设计派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。
在main()函数中,定义CSolid *p;(p是指向基类的指针,且这个基类是个抽象类)。
要求利用这个p指针,能够求出正方体、球体及圆柱体对象的表面积及体积。
 */
#include <iostream>
#define PI 3.1415926
using namespace std;
class CSolid
{
public:
    virtual double Superficial_area()=0;//表面积
    virtual double Volume()=0;//体积
};
/*-----------------------------------------------------------------------------------*/
class CCube:public CSolid//正方体类
{
private:
    double length;//正方体的长
public:
    CCube(double l):length(l){}//构造函数
    double Superficial_area();
    double Volume();
};
double  CCube::Superficial_area()//求表面积
{
    double S_a;
    S_a=6*length*length;
    return S_a;
}
double CCube::Volume()//求体积
{
    double volume;
    volume=length*length*length;
    return volume;
}
/*-----------------------------------------------------------------------------------*/
class CBall:public CSolid
{
private:
    double radius;//球体的半径
public:
    CBall(double r):radius(r){}//构造函数
    double Superficial_area();
    double Volume();
};
double CBall::Superficial_area()
{
    double ball_area;
    ball_area=4*PI*radius*radius;
    return ball_area;
}
double CBall::Volume()
{
    double ball_volume;
    ball_volume=4/3*PI*radius*radius*radius;
    return ball_volume;
}
/*-----------------------------------------------------------------------------------*/
class CCylinder:public CSolid
{
private:
    double high;
    double radius;
public:
    CCylinder(double h,double ra):high(h),radius(ra){}
    double Superficial_area();
    double Volume();
};
double CCylinder::Superficial_area()
{
    double CCylinder_area;
    CCylinder_area=2*PI*radius*radius+2*PI*radius*high;
    return CCylinder_area;
}
double CCylinder::Volume()
{
    double ccylinder_volume;
    ccylinder_volume=PI*radius*radius*high;
    return ccylinder_volume;
}

/*-----------------------------------------------------------------------------------*/
int main()
{
    CSolid *p;

    CCube a(6);
    p=&a;
    cout<<"正方体的表面积为:"<<p->Superficial_area()<<endl;
    cout<<"正方体的体积为:"<<p->Volume()<<endl;
    cout<<endl;

    CBall b(10);
    p=&b;
    cout<<"球体的表面积为:"<<p->Superficial_area()<<endl;
    cout<<"球体的体积为:"<<p->Volume()<<endl;
    cout<<endl;

    CCylinder c(10,5);
    p=&c;
    cout<<"圆柱的表面积为:"<<p->Superficial_area()<<endl;
    cout<<"圆柱的体积为:"<<p->Volume()<<endl;


    return 0;
}

运行结果:

因为基类函数里忘了写public,导致主函数一直运行不通过,眼睁睁看了二十分钟,必要一定要看清楚。

还有每次第一遍敲完代码后有很多错误都是一些打错了的基本错误,以后要注意。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值