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

  • 相关阅读:
    C语言的选择结构和条件判断
    学习C语言必须知道的理论知识(第三章数据类型的分类)
    基本输入输出函数以及其格式.
    学习C语言必须知道的理论知识(第三章常量和变量)
    简单的算术题。
    学习C语言必须知道的理论知识(第二章算法)
    学习C语言必须知道的理论知识(第一章)
    学习C语言必须知道的理论知识(第三章常量类型,运算符和表达式)
    C语言中的循环控制语句.
    彻底弄懂JS中的this
  • 原文地址:https://www.cnblogs.com/mayuko/p/4567470.html
Copyright © 2011-2022 走看看