zoukankan      html  css  js  c++  java
  • 第十三周项目3-立体类族共有的抽象类

    设计一个抽象类CSolid,含有用于求表面积及体积的两个纯虚函数。设计派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。在main()函数中,定义CSolid *p;(p是指向基类的指针,且这个基类是个抽象类)。要求利用这个p指针,能够求出正方体、球体及圆柱体对象的表面积及体积。

    main()函数使用的贺老上的。

    /*
    * Copyright (c) 2015,烟台大学计算机学院
    * All right reserved.
    * 作者:邵帅
    * 文件:Demo.cpp
    * 完成时间:2015年06月07日
    * 版本号:v1.0
    */
    #include <iostream>
    #include <string>
    using namespace std;
    const double pi=3.14;
    class CSolib
    {
    public:
        virtual double area()=0;
        virtual double volume()=0;
    };
    class CCube:public CSolib
    {
    private:
        double length;
    public:
        CCube(double l):length(l){}
        double area();
        double volume();
    };
    double CCube::area()
    {
        return (6*length*length);
    }
    double CCube::volume()
    {
        return (length*length*length);
    }
    class CBall:public CSolib
    {
    private:
        double radius;
    public:
        CBall(double r):radius(r){}
        double area();
        double volume();
    };
    double CBall::area()
    {
        return (4*pi*radius*radius);
    }
    double CBall::volume()
    {
        return (pi*radius*radius*radius*4/3);
    }
    class CCylinder:public CSolib
    {
    private:
        double radius;
        double height;
    public:
        CCylinder(double r,double h):radius(r),height(h){}
        double area();
        double volume();
    };
    double CCylinder::area()
    {
        return (2*pi*radius*radius+2*pi*radius*height);
    }
    double CCylinder::volume()
    {
        return (pi*radius*radius*height);
    }
    int main()
    {
        CSolib *p;
        double s,v;
        CCube x(30);
        cout<<"立方体边长为 30 "<<endl;
        p=&x;
        s=p->area();
        v=p->volume();
        cout<<"表面积:"<<s<<endl;
        cout<<"体积:"<<v<<endl;
        cout<<endl;
        CBall y(4.5);
        cout<<"球体半径为 4.5 "<<endl;
        p=&y;
        s=p->area();
        v=p->volume();
        cout<<"表面积:"<<s<<endl;
        cout<<"体积:"<<v<<endl;
        cout<<endl;
        CCylinder z(10,20);
        cout<<"圆柱体底面半径、高分别为 10, 20"<<endl;
        p=&z;
        s=p->area();
        v=p->volume();
        cout<<"表面积:"<<s<<endl;
        cout<<"体积:"<<v<<endl;
        cout<<endl;
        return 0;
    }
    
    运行结果:


    @ Mayuko

  • 相关阅读:
    strak组件(9):关键字搜索
    strak组件(8):基本增删改查实现及应用和排序
    stark组件(7):增加分页功能
    strak组件(6):列表定制列应用和引入静态文件
    strak组件(5):为列表定制预留钩子方法
    stark组件(4):列表定义列,展示数据库数据
    strak组件(3):URL别名的优化
    windows开启3389
    kali安装AVWS13
    SQLMAP使用大全
  • 原文地址:https://www.cnblogs.com/mayuko/p/4567470.html
Copyright © 2011-2022 走看看