• 第十三周项目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

  • 相关阅读:
    DevExpress ASP.NET v19.1版本亮点:Pivot Grid等控件
    .NET界面控件DevExpress全新发布v19.1.5|改进Office 2019主题
    Kendo UI for jQuery使用教程:操作系统/jQuery支持等
    Web安全篇之SQL注入攻击
    SQL Server中timestamp(时间戳)和rowversion(版本戳)
    PyCharm2019 激活码
    性能测试 vs 负载测试 vs 压力测试
    一套完整的压力测试项目文档
    Visual Studio性能计数器,负载测试结果分析- Part III
    Visual Studio进行负载测试,RIG和负载测试术语- Part II
  • 原文地址:https://www.cnblogs.com/mayuko/p/4567470.html
Copyright © 2020-2023  润新知