立方体类组中的纯虚函数类
来源:互联网 发布:智能推荐系统书籍 知乎 编辑:程序博客网 时间:2024/06/04 23:49
/** Copyright (c) 2013, 烟台大学计算机学院* All rights reserved.* 文件名称:test.cpp* 作者:邱学伟* 完成日期:2013 年 6 月 2 日* 版本号:v1.0* 输入描述:无* 问题描述:* 程序输出:* 问题分析:* 算法设计:略*//*设计一个抽象类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 w):width(w){} virtual double area() const //正方体的表面积 { return 6*width*width; } virtual double volume() const //正方体的体积 { return width*width*width; } private: double width;};class CBall:public CSolid //球体{ public: CBall(double r0):r(r0){} virtual double area() const //球体的表面积 { return 4*3.14*r*r; } virtual double volume() const //球体的体积 { return (4*3.14*r*r*r)/3; } private: double r;};class CCylinder:public CSolid{ public: CCylinder(double r0,double h):r(r0),height(h){} virtual double area() const { return 2*(3.14*r*r)+height*3.14*r*2; } virtual double volume() const { return height*3.14*r*r; } private: double r,height;};int main(){ CSolid *p; double s,v; CCube c1(30); p=&c1; s=p->area(); v=p->volume(); cout<<"边长为30的正方体表面积为:"<<s<<endl; cout<<"边长为30的正方体的体积为:"<<v<<endl; CBall c2(5); p=&c2; s=p->area(); v=p->volume(); cout<<"半径为5的球的表面积为:"<<s<<endl; cout<<"半径为5的球的体积为:"<<v<<endl; CCylinder c3(5,4); p=&c3; s=p->area(); v=p->volume(); cout<<"半径为5,高为4的圆柱的表面积为:"<<s<<endl; cout<<"半径为5,高为4的圆柱的体积为:"<<v<<endl;}