第十四周 【项目3-立体类族共有的抽象类】

来源:互联网 发布:手机振动器软件 编辑:程序博客网 时间:2024/05/16 05:25
#include<iostream>using namespace std;class CSolid{public:    virtual double area() const =0;    virtual double vv() const =0;};class CCube:public CSolid{private:    double r;public:    CCube(double rr):r(rr){};    virtual double area() const    {        return r*r*6;    }    virtual double vv() const    {        return r*r*r;    }};class CBall:public CSolid{private:    double r;public:    CBall(double rr1):r(rr1){};    virtual double area() const    {        return 4*3.14*r*r;    }    virtual double vv() const    {        return (4/3)*r*r*r*3.14;    }};class CCylinder:public CSolid{private:    double r;    double h;public:    CCylinder(double rr,double hh):r(rr),h(hh){};    virtual double area() const    {        return 3.14*r*r*2+2*3.14*r*h;    }    virtual double vv() const    {        return 3.14*r*r*h;    }};int main(){    CSolid *p;    double s,v;    CCube x(3);    cout<<"立方体边长为 3 "<<endl;    p=&x;    s=p->area( );    v=p->vv( );    cout<<"表面积:"<<s<<endl;    cout<<"体积:"<<v<<endl;    cout<<endl;    CBall y(4.5);    cout<<"球体半径为 4.5 "<<endl;    p=&y;    s=p->area( );    v=p->vv( );    cout<<"表面积:"<<s<<endl;    cout<<"体积:"<<v<<endl;    cout<<endl;    CCylinder z(1,2);    cout<<"圆柱体底面半径、高分别为 1, 2"<<endl;    p=&z;    s=p->area( );    v=p->vv( );    cout<<"表面积:"<<s<<endl;    cout<<"体积:"<<v<<endl;    cout<<endl;    return 0;}


运行结果

 

0 0