设计抽象类并派生新类
来源:互联网 发布:pyenv 切换python版本 编辑:程序博客网 时间:2024/05/16 15:55
/** 程序的版权和版本声明部分* Copyright (c)2012, 烟台大学计算机学院学生* All rightsreserved.* 文件名称: object.cpp* 作者:赵 洋* 完成日期: 2013年 5 月 31日* 版本号: 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 l):light(l) {} virtual double area() const; virtual double volume()const;private: double light;};double CCube::area()const{ return light*light;}double CCube::volume()const{ return light*light*light;}class CBall:public CSolid{public: CBall(double r):radius(r) {} virtual double area()const; virtual double volume()const;private: double radius;};double CBall::area()const{ return 4*3.14*radius*radius;}double CBall::volume()const{ return (4*3.14*radius*radius*radius)/3;}class CCylinder:public CSolid{public: CCylinder(double r,double h):radius(r),height(h) {} virtual double area()const; virtual double volume()const;private: double radius; double height;};double CCylinder::area()const{ return (2*(3.14*radius*height+3.14*radius*radius));}double CCylinder::volume()const{ return 3.14*radius*radius*height;}int main( ){ CSolid *p; double s,v; CCube x(10); cout<<"立方体边长为30"<<endl; p=&x; s=p->area( ); v=p->volume( ); cout<<"表面积:"<<s<<endl; cout<<"体积:"<<v<<endl; cout<<endl; CBall y(5); cout<<"球体半径为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;}
运行结果:
- 设计抽象类并派生新类
- 使用抽象类派生子类
- 设计一个父类,并派生多个子类
- 派生新类(4.25)
- 设计一个“航空器”抽象类,由它派生出两个子类:“运输机”类和“客机”类
- 第十三周 任务三 设计一个抽象基类,生出三个派生类
- 派生类是否是抽象类
- 抽象,派生类的学习笔记
- 抽象类的实现及派生
- 13周项目2:派生新类
- quick-cocos2dx 如何派生一个新类
- quick-cocos2dx 如何派生一个新类
- 第十三周【任务二】Animal设计为抽象类,每一个Animal的派生类都有一个“名字”数据成员
- 项目2抽象基类与派生类
- 在C#中派生C++的抽象类
- 13.3 抽象基类 Shape 的派生(平面图形)
- 13.4 抽象类CSolid 及派生 (空间立体图形)
- 由Shape派生出的抽象基类
- BZOJ 2322: [BeiJing2011]梦想封印
- 简单手机Wifi连接聊天
- 有关.net 开发程序第一次慢再运行快的问题及解决办法
- experiment : 封装 xxPagedLookasideList API
- MFCC研究(一)之语音信号的同态解卷积【已补全,20130602】
- 设计抽象类并派生新类
- 从黑名单中剔除白名单
- BUAA_倒排字典
- 一个问题阻止WINDOWS正确检查此机器的许可证,错误代码为0x8007000
- 第一课,开篇
- hdu 2156 分数矩阵
- Android NDK: WARNING: APP_PLATFORM android-14 is larger than android:minSdkVersion 7
- 动物类派生
- Another Eight Puzzle