第十三周任务四纯虚函数与继承

来源:互联网 发布:手机照片编制软件 编辑:程序博客网 时间:2024/06/08 10:01
/* (程序头部注释开始)* 程序的版权和版本声明部分* Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved.* 文件名称:   第十三周任务四纯虚函数与继承                           * 作    者:   石丽君                           * 完成日期:       2012  年     5  月    14    日* 版 本 号:            * 对任务及求解方法的描述部分  * 输入描述: 设计一个抽象类CSolid,含有两个求表面积及体积的纯虚函数。  设计个派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。  在main()函数中,定义基类的指针p(CSolid *p;),利用p指针,输出正方体、球体及圆柱体对象的表面积及体积。    * 问题描述:   * 程序输出:   * 程序头部的注释结束*/#include <iostream>#define pi 3.1415using namespace std;class CSolid{public:virtual double area() =0;virtual double volume() =0;};class CCube:public CSolid{public:virtual double area();virtual double volume();virtual double getl() {return longth;}double getw() {return wigth;}double  geth() {return higth;}CCube(double l,double w,double h):longth(l),wigth(w),higth(h) {}private:double longth;double wigth;double higth;};double CCube::area(){return 2*(longth*wigth*higth);}double CCube::volume(){return longth*wigth*higth;}class CBall :public CSolid {public:double area();double volume();virtual double getr() {return R;}CBall(double r):R(r) {}private:double R;};double CBall::area(){return 4*pi*R*R;}double CBall::volume(){return (4/3*pi*R*R*R);}class CCylinder:public CSolid {public:double area();double volume();virtual double getr() {return R;}virtual double geth() {return higth;}CCylinder(double r,double h):R(r),higth(h) {}private:double R;double higth;};double CCylinder::area(){return (2*pi*R*R+2*pi*R*higth);}double CCylinder::volume(){return pi*R*R*higth;}int main(){CSolid *p;CCube c1( 2,1,3);p=&c1;p->area();p->volume();cout<<"正方体的长"<<c1.getl()<<"宽"<<c1.getw()<<"高"<<c1.geth()<<endl;cout<<"正方体的面积"<<p->area()<<"体积为"<<p->volume()<<endl;CBall b(2.2);p=&b;cout<<"球体的半径为"<<b.getr()<<endl;cout<<"球体的面积"<<p->area()<<"体积为 "<<p->volume()<<endl;CCylinder y(3,2);p=&y;cout<<"圆柱体的半径"<<y.getr()<<"高为 "<<y.geth()<<endl;cout<<"圆柱体的面积"<<p->area()<<"体积为 "<<p->volume()<<endl;return 0;}

原创粉丝点击