标签:
设计一个抽象类CSolid,含有用于求表面积及体积的两个纯虚函数。设计派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。在main()函数中,定义CSolid *p;(p是指向基类的指针,且这个基类是个抽象类)。要求利用这个p指针,能够求出正方体、球体及圆柱体对象的表面积及体积。
main()函数使用的贺老上的。
/* * Copyright (c) 2015,烟台大学计算机学院 * All right reserved. * 作者:邵帅 * 文件:Demo.cpp * 完成时间:2015年06月07日 * 版本号:v1.0 */ #include <iostream> #include <string> using namespace std; const double pi=3.14; class CSolib { public: virtual double area()=0; virtual double volume()=0; }; class CCube:public CSolib { private: double length; public: CCube(double l):length(l){} double area(); double volume(); }; double CCube::area() { return (6*length*length); } double CCube::volume() { return (length*length*length); } class CBall:public CSolib { private: double radius; public: CBall(double r):radius(r){} double area(); double volume(); }; double CBall::area() { return (4*pi*radius*radius); } double CBall::volume() { return (pi*radius*radius*radius*4/3); } class CCylinder:public CSolib { private: double radius; double height; public: CCylinder(double r,double h):radius(r),height(h){} double area(); double volume(); }; double CCylinder::area() { return (2*pi*radius*radius+2*pi*radius*height); } double CCylinder::volume() { return (pi*radius*radius*height); } int main() { CSolib *p; double s,v; CCube x(30); cout<<"立方体边长为 30 "<<endl; p=&x; s=p->area(); v=p->volume(); cout<<"表面积:"<<s<<endl; cout<<"体积:"<<v<<endl; cout<<endl; CBall y(4.5); cout<<"球体半径为 4.5 "<<endl; p=&y; s=p->area(); v=p->volume(); cout<<"表面积:"<<s<<endl; cout<<"体积:"<<v<<endl; cout<<endl; CCylinder z(10,20); cout<<"圆柱体底面半径、高分别为 10, 20"<<endl; p=&z; s=p->area(); v=p->volume(); cout<<"表面积:"<<s<<endl; cout<<"体积:"<<v<<endl; cout<<endl; return 0; }运行结果:
@ Mayuko
标签:
原文地址:http://blog.csdn.net/mayuko2012/article/details/46405227