13周任务4

来源:互联网 发布:企业搜索软件破解版 编辑:程序博客网 时间:2024/05/17 03:58

/* (程序头部注释开始) 

* 程序的版权和版本声明部分 

* Copyright (c) 2012, 烟台大学计算机学院学生  

* All rights reserved. 

* 文件名称:  抽象类 

 

* 作 者:     苗影

* 完成日期:  2012 年 5 月 15日 

* 版 本 号:  x1.0 

* 对任务及求解方法的描述部分 

* 输入描述:  使用抽象类 

 

* 问题描述:  【任务4】设计一个抽象类CSolid,含有两个求表面积及体积的纯虚函数。 

              设计个派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。 

              在main()函数中,定义基类的指针p(CSolid *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 r=0.0);virtual double area()const;virtual double volume()const;protected:double radius;};CCube::CCube(double r){radius=r;}double CCube::area() const{return 6*radius*radius;}double CCube::volume() const{return radius*radius*radius;}class CBall:public  CSolid{public:CBall(double h=0);virtual double area()const;    virtual double volume()const;protected:double heigh;};CBall::CBall(double h):heigh(h){}double CBall::volume()const{return ((3.14159*3*heigh*heigh*heigh)/4);}double CBall::area() const{return 4*3.14159*heigh*heigh;}class CCylinder:public CSolid{public:   CCylinder(double d=0,double m=0);   virtual double area()const;   virtual double volume()const;protected:double di;double ma;};CCylinder::CCylinder(double d,double m):di(d),ma(m){}double CCylinder::area()const{return (2 * 3.14159 * di * di + 2 * 3.14159 * di* ma);}double CCylinder::volume()const{ return(3.14159 * di * di* ma);    }int main(){CCube ccube(2);CBall cball(3);CCylinder ccylinder(4,6);CSolid*p;p=&ccube;cout<<"正方体的表面积是:"<<p->area ()<<"\n"<<"正方体的体积是"<<p->volume ()<<"\n";p=&cball;cout<<"球体的表面积是:"<<p->area ()<<"\n"<<"球体的体积是"<<p->volume ()<<"\n";p=&ccylinder;    cout<<"圆柱体的表面积是:"<<p->area ()<<"\n"<<"圆柱体的体积是"<<p->volume ()<<"\n";system("pause");return 0;}
运行结果:正方体的表面积是:24正方体的体积是8球体的表面积是:113.097球体的体积是63.6172圆柱体的表面积是:251.327圆柱体的体积是301.593请按任意键继续. . .
感言:很快完成了任务,真好!!要是每次都这样多好