第十三周项目三--立体类族共有的抽象类
2015-06-07 11:13
330 查看
问题及代码:
运行结果:
![](http://img.blog.csdn.net/20150607111513417?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2hhbmd5dWUwMjU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
学习总结:没有模板就有点儿无从下手了,还是一边参考,一边做~~
/* Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:尚 月 * 完成日期:2015年 06 月 07 日 * 版 本 号:v1.0 * 问题描述:设计一个抽象类CSolid,含有用于求表面积及体积的两个纯虚函数。设计派生类CCube、CBa来了、CCylinder,分别表示正方体,球体及圆柱体。在main函数中,定义CSolid*p(p是指向基类的指针,且这个基类是抽象基类。要求这个p指针,能够求出正方体、球体及圆柱体对象的表面积及体积 * 程序输入: 无 * 程序输出: 按要求输出 */ #include <iostream> using namespace std; const double pai=3.1415926; // 抽象立体图形基类 class CSolid { public: virtual double SurfaceArea() const { } virtual double Volume() const { } }; // 立方体类 class CCube : public CSolid { public: CCube(double len=0); double SurfaceArea() const; // 求表面积 double Volume() const; // 求体积 private: double length; }; // 立方体类构造函数 CCube::CCube(double len) { length=len; } // 求立方体表面积 double CCube::SurfaceArea() const { double c; c=6*length*length; return c; } // 求立方体体积 double CCube::Volume() const { double c; c=length*length*length; return c; } // 球体类 class CBall : public CSolid { private: double radius; // 圆周率 public: CBall(double r=0); double SurfaceArea() const; // 求表面积 double Volume() const; // 求体积; }; // 球体类构造函数 CBall::CBall(double r) { radius=r; } // 求球体表面积 double CBall::SurfaceArea() const { double c; c=4*pai*radius*radius; return c; } // 求球体体积 double CBall::Volume() const { double c; c=pai*radius*radius*radius*4/3; return c; } // 圆柱体类 class CCylinder : public CSolid { private: double radius; double height; public: CCylinder(double r=0,double high=0); double SurfaceArea() const; // 求表面积 double Volume() const; // 求体积 }; // 圆柱体类构造函数 CCylinder::CCylinder(double r,double high) { radius=r; height=high; } // 求圆柱体表面积 double CCylinder::SurfaceArea() const { double c; c=2*pai*radius*radius+2*pai*radius*height; return c; } // 求圆柱体体积 double CCylinder::Volume() const { double c; c=pai*radius*radius*height; return c; } int main( ) { CSolid *p; double s,v; CCube x(40); cout<<"立方体边长为 40 "<<endl; p=&x; s=p->SurfaceArea( ); v=p->Volume( ); cout<<"表面积:"<<s<<endl; cout<<"体积:"<<v<<endl; cout<<endl; CBall y(5.5); cout<<"球体半径为 5.5 "<<endl; p=&y; s=p->SurfaceArea( ); v=p->Volume( ); cout<<"表面积:"<<s<<endl; cout<<"体积:"<<v<<endl; cout<<endl; CCylinder z(10,20); cout<<"圆柱体底面半径、高分别为 10, 20"<<endl; p=&z; s=p->SurfaceArea( ); v=p->Volume( ); cout<<"表面积:"<<s<<endl; cout<<"体积:"<<v<<endl; cout<<endl; return 0; }
运行结果:
学习总结:没有模板就有点儿无从下手了,还是一边参考,一边做~~
相关文章推荐
- Android基础之/mnt/sdcard与/sdcard区别
- 10000的阶乘
- 生物医学工程单词积累
- Project Euler:Problem 49 Prime permutations
- SimPoint: 抽样创建模拟点减少spec2006运行时间
- tinkphp URL重写,支持伪静态
- Visual C++剪贴板操作不完全攻略
- JSP复习
- mysql配置文件my.cnf优化实例
- linux 命令
- 我的Android开发相关文章
- Atom配置
- hdoj 3549 Flow Problem 【最大流入门 dinic算法】
- UNIX 环境高级编程
- 连载三---探索Objc/Runtime
- android进程与线程详解一:进程
- Libgdx1.6.2发布,跨平台游戏开发框架
- tomcat通过conf-Catalina-localhost目录发布项目详解
- 机器学习Matlab实战之垃圾邮件分类————朴素贝叶斯模型
- 第十三周项目2-形状类族的中的纯虚函数