十三周任务四
2012-05-16 19:42
176 查看
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2012, 烟台大学计算机学院学生 * All rights reserved. * 文件名称: * 作者:刘杨 * 完成日期: 2012 年 5 月 14 日 * 版本号: x1.0 * 对任务及求解方法的描述部分 * 输入描述: * 问题描述:设计一个抽象类CSolid,含有两个求表面积及体积的纯虚函数。设计个派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。在main()函数中,定义基类的指针p(CSolid *p;),利用p指针,输出正方体、球体及圆柱体对象的表面积及体积。 * 程序输出: * 程序头部的注释结束 */ #include<iostream> #include<string> using namespace std; class CSolid { public: virtual void area() = 0; virtual void volume() = 0; }; class CCube:public CSolid { public: CCube(double h){height = h;} virtual void area(); virtual void volume(); private: double height; }; class CBall:public CSolid { public: CBall(double r){radius = r;} virtual void area(); virtual void volume(); private: double radius; }; class CCylinder:public CSolid { public: CCylinder(double r,double h){radius = r;height = h;} virtual void area(); virtual void volume(); private: double radius; double height; }; void CCube::area() { cout << "边长为" << height << "的正方体的表面积是:" << height * height * 6 << endl; } void CCube::volume() { cout << "边长为" << height << "的正方体的体积是:" << height * height * height << endl; } void CBall::area() { cout << "半径为" << radius << "的球的表面积是:" << 4 * 3.14 * radius * radius << endl; } void CBall::volume() { cout << "半径为" << radius << "的球的体积是:" << 4 * 3.14 * radius * radius * radius / 3 << endl; } void CCylinder::area() { cout << "高为" << height << ",底面半径为" << radius << "的圆柱的表面积是:" << 2 * 3.14 * radius * radius + 2 * 3.14 * radius * height << endl; } void CCylinder::volume() { cout << "高为" << height << ",底面半径为" << radius << "的圆柱的表面积是:" << 3.14 * radius * radius * height << endl; } int main() { CSolid *p; CCube cube(4.0); p = &cube; p->area(); p->volume(); CBall ball(3.0); p = &ball; p->area(); p->volume(); CCylinder cylinder(3.0,4.0); p = &cylinder; p->area(); p->volume(); system("pause"); return 0; }
运行结果: