立体类族共有的抽象类
2016-06-15 13:36
344 查看
/* Copyright (c) 2016* All rights reserved 烟台大学计算机与控制工程学院 * 文件名称:3.cpp * 作者:刘丽 * 完成日期:2016年 6 月 15日 * 版本号: v1.0 【项目-立体类族共有的抽象类】 设计一个抽象类CSolid,含有用于求表面积及体积的两个纯虚函数。设计派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。在main()函数中,定义CSolid *p;(p是指向基类的指针,且这个基类是个抽象类)。要求利用这个p指针,能够求出正方体、球体及圆柱体对象的表面积及体积。 */ #include<iostream> #include<cstring> #define PI 3.1415926 using namespace std; class CSolid { public: virtual double area()=0; virtual double volume()=0; }; class CCube:public CSolid { protected: double l; double h; double w; public: CCube(double w,double l,double h):w(w),l(l),h(h){}; double area(); double volume(); }; class CBall:public CSolid { protected: double r; public: CBall(double r):r(r){}; double area(); double volume(); }; class CCylinder:public CSolid { protected: double r; double l; double h; public: CCylinder(double r,double l,double h):r(r),l(l),h(h){}; double area(); double volume(); }; double CCube:: area() { return 2*(w*l+w*h+l*h); } double CCube::volume() { return w*l*h; } double CBall:: area() { return 4*PI*r*r; } double CBall::volume() { return 4/3*PI*r*r*r; } double CCylinder:: area() { return PI*r*r+l*h; } double CCylinder::volume() { return 0.5*PI*r*r*h; } int main() { CSolid *p; CCube r1(1,2,3); CBall r2(2); CCylinder r3(1,2,3); p=&r1; cout<<"area="<<p->area()<<endl; cout<<"volume="<<p->volume()<<endl; p=&r2; cout<<"area="<<p->area()<<endl; cout<<"volume="<<p->volume()<<endl; p=&r3; cout<<"area="<<p->area()<<endl; cout<<"volume="<<p->volume()<<endl; return 0; }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android Native 绘图方法
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Mootools 1.2教程 函数
- autoit InputBox 函数
- 文件遍历排序函数
- 关于C#中排序函数的总结
- Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
- ASP下经常用的字符串等函数参考资料
- PostgreSQL教程(五):函数和操作符详解(1)
- C#中struct和class的区别详解
- DOS批处理 函数定义与用法
- asp Chr 函数 数字转字母的方法
- Lua中的函数精讲笔记
- Lua中的闭合函数、非全局函数与函数的尾调用详解
- Lua中调用C++函数示例
- Lua实现split函数