[cpp] view plaincopy /* * 程序的版权和版本声明部分 * Copyright (c)2013, 烟台大学计算机学院学生 * All rightsreserved. * 作者: 杨绍宁 * 完成日期: 2013年 6 月 3日 * 版本号: v1.0 * 输入描述:无 * 问题描述:抽象类CSolid。 * 程序输出:无 */ #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 aa,double bb,double hh):a(aa),b(bb),h(hh){} double area()const; double volume() const; protected: double a; double b; double h; }; double CCube::area()const { double s; s=(a*b+a*h+b*h)*2; return s; } double CCube::volume() const { double v; v=a*b*h; return v; } class CBall:public CSolid //球体 { public: CBall(double rr):r(rr){} virtual double area() const; virtual double volume() const; protected: double r; }; double CBall::area() const { double s; s=4*3.14*r*r; return s; } double CBall::volume() const { double v; v=(4*r*r*r)/3; return v; } class CCylinde:public CSolid //圆柱体 { public: CCylinde(double rr,double hh):r(rr),h(hh){} virtual double area()const; virtual double volume()const; protected: double r,h; }; double CCylinde::area()const { double s; s=2*3.14*r*r+2*3.14*r*h; return s; } double CCylinde::volume()const { double v; v=3.14*r*r*h; return v; } int main() { CCube c1(2,3,4); CBall c2(2); CCylinde c3(1,2); CSolid *pt; pt=&c1; cout<<"表面积"<<pt->area()<<" 体积"<<pt->volume()<<endl; pt=&c2; cout<<"表面积"<<pt->area()<<" 体积"<<pt->volume()<<endl; pt=&c3; cout<<"表面积"<<pt->area()<<" 体积"<<pt->volume()<<endl; return 0; }
结果:
感受:呵呵!!!
作者:ning847273990 发表于2013-6-4 21:49:38 原文链接
阅读:16 评论:0 查看评论