第十三周 项目三 立体类族共有的抽象类
2015-06-03 17:52
330 查看
问题及代码:
运行结果:
![](http://img.blog.csdn.net/20150603175144922)
知识点总结:和前面的程序都是一样的道理。
学习心得:这周的项目少,也比较简单,完成起来还是蛮轻松的。
/* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:Project.cpp *作 者:chenqin. *完成日期:2015年6月3日 *版 本 号:v1.0 * *问题描述: 设计一个抽象类CSolid,含有用于求表面积及体积的两个纯虚函数。设计派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。在main()函数中,定义CSolid *p;(p是指向基类的指针,且这个基类是个抽象类)。要求利用这个p指针,能够求出正方体、球体及圆柱体对象的表面积及体积。 *程序输入:略 *程序输出:略 */ #include <iostream> using namespace std; class CSolid { public: virtual double area()const=0; virtual double volume()const=0; }; class CCube:public CSolid { public: CCube(double a=0); virtual double area()const { return 6.0*length*length; } virtual double volume()const { return length*length*length; } protected: double length; }; CCube::CCube(double a) { length=a; } class CBall:public CSolid { public: CBall(double r=0); virtual double area()const { return 4*3.14*rad*rad; } virtual double volume()const { return (4/3)*3.14*rad*rad*rad; } protected: double rad; }; CBall::CBall(double r) { rad=r; } class CCylinder:public CSolid { public: CCylinder(double r=0,double h=0); virtual double area()const { return 2.0*3.14*rad*rad+2.0*3.14*rad*height; } virtual double volume()const { return 3.14*rad*rad*height; } private: double height; double rad; }; CCylinder::CCylinder(double r,double h) { rad=r; height=h; } int main() { CSolid *p; CCube z(6); cout<<"该正方体的表面积为:"; p=&z; cout<<p->area()<<endl; cout<<"改正方体的体积为:"<<p->volume()<<endl; CBall q(10); cout<<"该球体的表面积为:"; p=&q; cout<<p->area()<<endl; cout<<"该球体的体积为:"<<p->volume()<<endl; CCylinder y(5,10); p=&y; cout<<"该圆柱体的表面积为:"<<p->area()<<endl; cout<<"该圆柱体的体积为:"<<p->volume()<<endl; }
运行结果:
知识点总结:和前面的程序都是一样的道理。
学习心得:这周的项目少,也比较简单,完成起来还是蛮轻松的。
相关文章推荐
- CentOS 7 可动态切换运行级别,设置默认运行级别(启动方式)
- u-boot的Makefile分析
- unity3d ngui-TweenRotation-TweenPosition-TweenScale
- Android 上传中文到服务器时的乱码问题
- osg 不同节点间的碰撞检查
- 排序算法(冒泡,选择,快速)Java 实现
- jstl中<c:forEach>的用法
- cocos2d-x lua 触摸事件
- tiny210——uboot移植之Makefile剖析篇
- dojo中tree的使用教程(一)
- hive on tez详细配置和运行测试
- 使用vbs脚本添加域网络共享驱动器
- iOS开发网络数据之AFNetworking使用
- github出现HTTP request failed
- 详解SESSION与COOKIE的区别
- 4.18
- iOS开发中线程通信
- -1.#IND,1.#INF 的判断
- js两种生成对象模式(公有成员和成员私有)
- java中的一些网络知识