项目四。立体类族共有的抽象类

来源:互联网 发布:求电话销售一手数据 编辑:程序博客网 时间:2024/05/14 20:00

程序:

//【项目3-立体类族共有的抽象类】设计一个抽象类CSolid,含有用于求表面积及体积的//两个纯虚函数。设计派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。//在main()函数中,定义CSolid *p;(p是指向基类的指针,且这个基类是个抽象类)。//要求利用这个p指针,能够求出正方体、球体及圆柱体对象的表面积及体积。#include <iostream>#define pi 3.14using namespace std;class CSolid{public:    virtual double area()= 0;//抽象类    virtual double volume()= 0;};class CBall:public CSolid//球体{private:    double radius;public:    CBall(double r):radius(r){cout<<"半径为"<<radius<<endl;}    double area()    {        return 4*pi*radius*radius;    }    double volume()    {        return 4*pi*radius*radius*radius/3;    }};class CCube:public CSolid//正方体{private:    double length;public:    CCube(double l):length(l){cout<<"边长为"<<length<<endl;}    double area()    {        return length*length*6;    }    double volume()    {        return length*length*length;    }};class CCylinder:public CSolid//圆柱体{private:    double radius,hight;public:    CCylinder(double r,double h):radius(r),hight(h)    {        cout<<"底面半径为"<<radius<<",高为"<<hight<<endl;    }    double area()    {        return 2*pi*radius*hight+4*pi*radius;    }    double volume()    {        return pi*radius*radius*hight;    }};int main(){    CSolid *p;    cout<<"正方体:";    CCube cc(4.5);    p=&cc;    cout<<"面积是"<<p->area()<<"  体积是"<<p->volume()<<endl;    cout<<"球体:";    CBall cb(3.2);    p=&cb;    cout<<"面积是"<<p->area()<<"  体积是"<<p->volume()<<endl;    cout<<"圆柱体:";    CCylinder cy(4.5,5);    p=&cy;    cout<<"面积是"<<p->area()<<"  体积是"<<p->volume()<<endl;    return 0;}


 

结果:

0 0
原创粉丝点击