第十三周项目三:立体类族共有的抽象类
2015-06-03 08:44
260 查看
设计一个抽象类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):x(a) {}; virtual double area() const { return 6*x*x; }; virtual double volume() const { return x*x*x; }; protected: double x; }; class CBall: public CSolid { public: CBall(double r):R(r) {}; virtual double area() const { return 4*3.1415926*R*R; } virtual double volume() const { return (4/3)*3.1415926*R*R*R; } protected: double R; }; class CCylinder: public CSolid { public: CCylinder (double r,double h):radium(r),height(h) {}; virtual double area() const { return 2*3.1415926*radium*height; } virtual double volume() const { return 3.1415926*radium*radium*height; } protected: double radium; double height; }; int main() { CSolid *p; CCube cube(5.3); CBall ball(8.3); CCylinder cylinder(3.4,8.2); p=&cube; cout<<"正方体的表面积为:"<<p->area()<<endl; cout<<"正方体的体积为:"<<p->volume()<<endl; p=&ball; cout<<"圆的表面积为:"<<p->area()<<endl; cout<<"圆方体的体积为:"<<p->volume()<<endl; p=&cylinder; cout<<"圆柱体的表面积为:"<<p->area()<<endl; cout<<"圆柱体的体积为:"<<p->volume()<<endl; return 0; }
相关文章推荐
- elasticsearch的实现全文检索
- MySQL按照汉字拼音首字母排序
- OJ对象数组输入与输出
- 第十三周 项目2-形状类族的中的纯虚函数
- 第13周 【项目 - 链表类】阅读项目
- 第十三周项目1--动物这样叫(2)
- C++刷题——2802: 判断字符串是否为回文
- 第13周项目 程序阅读(4)
- 领域驱动设计系列(3)有选择性的使用领域驱动设计
- 记一次云计算测试实验-openstack-icehouse-环境介绍
- 十三周项目一
- C语言之第六章 常量 宏 函数
- 百度平台首个神秘创业项目悄然上线(
- 连接3600行,百度靠什么来实现?
- 领域驱动设计系列(2)浅析VO、DTO、DO、PO的概念、区别和用处
- 领域驱动设计系列(1)通过现实例子显示领域驱动设计的威力
- 树链剖分学习
- java Class.forName("") .newInstance();
- 2015.6.3动物这样叫
- 站立会议2 第二天(补发)