第十三周项目三 立体类族共有的抽象类
2015-05-31 16:12
363 查看
/* Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作者:刘佳琦 * 完成日期:2015年 5 月 31 日 * 版 本 号:v1.0 * * 问题描述: 设计一个抽象类CSolid,含有用于求表面积及体积的两个纯虚函数。设计派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。在main()函数中,定义CSolid *p;(p是指向基类的指针,且这个基类是个抽象类)。要求利用这个p指针,能够求出正方体、球体及圆柱体对象的表面积及体积。 * 程序输入: * 程序输出: */ #include <iostream> using namespace std; class CSolid { public: virtual double SurfaceArea() const { return 0.0; }; virtual double Volume() const { return 0.0; } }; class CCube : public CSolid { public: CCube(double len=0) { length=len; }; double SurfaceArea() const { double c; c=6*length*length; return c; } double Volume() const { double c; c=length*length*length; return c; } private: double length; }; class CBall : public CSolid { private: double radius; public: CBall(double r=0):radius(r) {} double SurfaceArea() const { double c; c=4*3.14159*radius*radius; return c; } double Volume() const { double c; c=3.14159*radius*radius*radius*4/3; return c; } }; class CCylinder : public CSolid { private: double radius; double height; public: CCylinder(double r=0,double h=0):radius(r),height(h) {} double SurfaceArea() const { double c; c=2*3.14159*radius*radius+2*3.14159*radius*height; return c; } double Volume() const { double c; c=3.14159*radius*radius*height; return c; } }; int main( ) { CSolid *p; double s,v,a,b; cout<<"请输入正方体棱长:"; cin>>a; cout<<"正方体:"; CCube x(a); p=&x; s=p->SurfaceArea( ); v=p->Volume( ); cout<<"表面积:"<<s<<endl; cout<<"体积:"<<v<<endl; cout<<"请输入球体的半径:"; cin>>a; CBall y(a); cout<<"球体:"<<endl; p=&y; s=p->SurfaceArea( ); v=p->Volume( ); cout<<"表面积:"<<s<<endl; cout<<"体积:"<<v<<endl; cout<<"请输入圆柱体底面半径和高:"; cin>>a>>b; CCylinder z(a,b); cout<<"圆柱体:"<<endl; p=&z; s=p->SurfaceArea( ); v=p->Volume( ); cout<<"表面积:"<<s<<endl; cout<<"体积:"<<v<<endl; return 0; }运行结果:
学习心得:
虽然木有给模板,我还是参考了前面的项目,编出这个程序还是比较容易,这周项目好少呀~抓紧时间刷题去~
相关文章推荐
- HDU 2016 数据的交换输出
- python基础教程学习笔记---(5)条件、循环和其他语句
- 浏览器主页被篡改为hao123解决办法
- 第十三周 【项目2-形状类族的中的纯虚函数】
- 接口可以创建对象吗
- Android UI 模板设计
- Source Insight配置
- Hibernate get和load区别
- POJ2001 -- 字典树和字符串的前缀
- 十二周——多态性——项目一(2)动物怎样叫
- CSS中样式 display 属性 inline,block及inline-block
- linux防火墙iptables
- CBPeripheralManager学习笔记
- Nginx+uwsgi+Django 搭建一个简单的web服务器
- Java内部类
- CSS样式属性
- mysql 优化
- android 推送选择
- mysql 逻辑架构
- SAS文档:简单的随机点名器