十二周——多态性——项目三 立体类族共有的抽象类

来源:互联网 发布:手机积分软件 编辑:程序博客网 时间:2024/05/27 20:32

问题及代码:

/* *Copyright (c) 2014,烟台大学计算机学院 *All rights reserved. *文件名称:lily.cpp *作者:李莉 *完成日期:2015年6月1日 *版本号:v1.0 *问题描述:设计一个抽象类CSolid,含有用于求表面积及体积的两个纯虚函数。设计派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。在main()函数中,定义CSolid *p;(p是指向基类的指针,且这个基类是个抽象类)。要求利用这个p指针,能够求出正方体、球体及圆柱体对象的表面积及体积。*程序输入:无输入 *程序输出:运行结果 */    #include <iostream>using namespace std;class CSolid{public:    virtual double area()=0;    virtual double volume()=0;};class CCube:public CSolid{public:    CCube(){};    void setl()    {        cin>>length;;    }    virtual double area()    {        return length*length*6;    }    virtual double volume()    {        return length*length*length;    }private:    double length;};class CBall:public CSolid{public:    CBall(){};    void setr()    {        cin>>r;    }    virtual double area()    {        return 4*3.14159*r*r;    }    virtual double volume()    {        return (4/3)*3.14159*r*r*r;    }private:    double r;};class CCylinder:public CSolid{public:    CCylinder(){};    void setr()    {        cin>>radius>>hight;    }    virtual double area()    {        return 2*radius*radius*3.14159+2*3.14159*radius*hight;    }    virtual double volume()    {        return radius*radius*3.14159*hight;    }private:    double radius;    double hight;};int main(){    CSolid *p;    double s,v;    CCube cu;    cout<<"请输入立方体的边长:"<<endl;    cu.setl();    p=&cu;    s=p->area();    v=p->volume();    cout<<"立方体的表面积是:"<<s<<endl;    cout<<"立方体的体积是:"<<v<<endl;    cout<<"请输入球的半径:"<<endl;    CBall ba;    p=&ba;    ba.setr();    s=p->area();    v=p->volume();    cout<<"球的表面积是:"<<s<<endl;    cout<<"球的体积是:"<<v<<endl;    CCylinder cy;    p=&cy;    cout<<"请输入圆柱体的底面半径和高:"<<endl;    cy.setr();    s=p->area();    v=p->volume();    cout<<"圆柱体的表面积是:"<<s<<endl;    cout<<"圆柱体的体积是:"<<v<<endl;    return 0;}


 

运行结果:

心得体会:

我怎么可以又忘记初始化呢!!!

0 0
原创粉丝点击