李春葆 p258 例44 多态性与虚函数 纯虚函数-抽象类

//李春葆  p258  例44   多态性与虚函数   纯虚函数-抽象类
#include <iostream>
#include <cstdio>
using namespace std;
class Container{
protected:
    double radius;
public:
    Container(double radius){
        Container::radius = radius;
    }

    virtual double surface_area()=0;
    virtual double volume()=0;

};

class cube:public Container{
public:
    cube(double radius):Container(radius){};  //分号是否添加 codeblocks 都正确
    double surface_area(){
        return radius*radius*6;
    }
    double volume(){
        return radius*radius*radius;
    }


};

class sphere:public Container{
public:
    sphere(double radius):Container(radius){}
    double surface_area(){
        return radius*radius*4*3.14;
    }
    double volume(){
        return radius*radius*radius*3.14*4/3;
    }
};

class cylinder:public Container{
    double height;
public:
    cylinder(double radius,double height):Container(radius){
        cylinder::height = height;

    }

    double surface_area(){
        return 2*3.14*radius*(height+radius);
    }
    double volume(){
        return 3.14*radius*radius*height;
    }
};


int main(){
    Container *p;
    cube obj1(5);
    sphere obj2(5);
    cylinder obj3(5,5);
    p = &obj1;
    cout<<"正方体表面积"<<p->surface_area()<<endl;
    cout<<"正方体体积"<<p->volume()<<endl;
    p = &obj2;
    cout<<"球体表面积"<<p->surface_area()<<endl;
    cout<<"求体体积"<<p->volume()<<endl;
    p = &obj3;
    cout<<"圆柱体表面积"<<p->surface_area()<<endl;
    cout<<"圆柱体体积"<<p->volume()<<endl;

    return 0;
}









全部评论

相关推荐

KKorz:是这样的,还会定期默写抽查
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务