C++走向远洋——60(项目四、立体类族共有的抽象类)
*/
* Copyright (c) 2016,烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名:text.cpp
* 作者:常轩
* 微信公众号:Worldhello
* 完成日期:2016年6月1日
* 版本号:V1.0
* 问题描述: 设计一个抽象类CSolid,含有用于求表面积及体积的两个纯虚函数。设计派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。在main()函数中,定义CSolid *p;(p是指向基类的指针,且这个基类是个抽象类)。要求利用这个p指针,能够求出正方体、球体及圆柱体对象的表面积及体积。
* 程序输入:无
* 程序输出:见运行结果
*/
#include<iostream>
using namespace std;
const double pai=3.1415;
class Csolid
{
public:
virtual double SurfaceArea() const=0;
virtual double Volume()const=0;
};
class CCube:public Csolid
{
public:
CCube(double len=0);
double SurfaceArea()const;
double Volume()const;
private:
double length;
};
CCube::CCube(double len)
{
length=len;
}
double CCube::SurfaceArea()const
{
double c;
c=6*length*length;
return c;
}
double CCube::Volume()const
{
double c;
c=length*length*length;
return c;
}
class CBall:public Csolid
{
private:
double radius;
public:
CBall(double r=0);
double SurfaceArea()const;
double Volume()const;
};
CBall::CBall(double r)
{
radius=r;
}
double CBall::SurfaceArea()const
{
double c;
c=4*pai*radius*radius;
return c;
}
double CBall::Volume()const
{
double c;
c=pai*radius*radius*radius*4/3;
return c;
}
class CCylinder:public Csolid
{
private:
double radius;
double height;
public:
CCylinder(double r=0,double high=0);
double SurfaceArea()const;
double Volume()const;
};
CCylinder::CCylinder(double r,double high)
{
radius=r;
height=high;
}
double CCylinder::SurfaceArea() const
{
double c;
c=2*pai*radius*radius+2*pai*radius*height;
return c;
}
double CCylinder::Volume() const
{
double c;
c=pai*radius*radius*height;
return c;
}
int main( )
{
Csolid *p;
double s,v;
CCube x(30);
cout<<"立方体边长为 30 "<<endl;
p=&x;
s=p->SurfaceArea( );
v=p->Volume( );
cout<<"表面积:"<<s<<endl;
cout<<"体积:"<<v<<endl;
cout<<endl;
CBall y(4.5);
cout<<"球体半径为 4.5 "<<endl;
p=&y;
s=p->SurfaceArea( );
v=p->Volume( );
cout<<"表面积:"<<s<<endl;
cout<<"体积:"<<v<<endl;
cout<<endl;
CCylinder z(10,20);
cout<<"圆柱体底面半径、高分别为 10, 20"<<endl;
p=&z;
s=p->SurfaceArea( );
v=p->Volume( );
cout<<"表面积:"<<s<<endl;
cout<<"体积:"<<v<<endl;
cout<<endl;
return 0;
}
运行结果:
C++走向远洋——60(项目四、立体类族共有的抽象类)的更多相关文章
- C++走向远洋——(项目二、存储班长信息的学生类、派生)
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...
- C++走向远洋——39(指向学生类的指针)
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:zhizhen.cpp * 作者:常轩 * 微信公众号:Worl ...
- C++走向远洋——29(长方柱类)
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:长方柱类.cpp * 作者:常轩 * 微信公众号:Worldhe ...
- C++走向远洋——60(十四周阅读程序、STL中的简单容器和迭代器)
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...
- (转载)项目实战工具类(一):PhoneUtil(手机信息相关)
项目实战工具类(一):PhoneUtil(手机信息相关) 可以使用的功能: 1.获取手机系统版本号 2.获取手机型号 3.获取手机宽度 4.获取手机高度 5.获取手机imei串号 ,GSM手机的 ...
- docker 运行jenkins及vue项目与springboot项目(四.docker运行nginx)
docker 运行jenkins及vue项目与springboot项目: 一.安装docker 二.docker运行jenkins为自动打包运行做准备 三.jenkins的使用及自动打包vue项目 四 ...
- [Effective Java]第四章 类和接口
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- 存储数据键和项目对的类(Dictionary对象)
存储数据键和项目对的类(Dictionary对象) <% Class Dictionary Public Copyright, Developer, Name, Version, Web Pri ...
- uml系列(四)——类图
类图是uml的核心.学习类图,总共须要掌握三个部分:类:类之间的关系:类图怎么画. 首先,类.老规矩,先来张图. 类是什么:举个简单的样例:猫.狗.猪三个都是动物.这里面的"动物" ...
随机推荐
- mysql琐碎操作杂记
1.索引相关 查看表索引 show index from `user` 查看sql的执行计划 explain select * from where user 2.存储过程相关 查看存储过程 show ...
- 画图认识--matplotlib.pyplot
matplotlib的pyplot模块提供了和MATLAB类似的绘图API,方便用户快速绘制二维图表.我们先看一个简单的 import matplotlib.pyplot as plt import ...
- 大道至简伪代码读后感java为代码形式
//愚公移山 import.java.大道至简.*; import.java.愚公移山.*; public class yishan //定义一个名为yishan的类 {//类定义的开始 public ...
- s01字符串---蓝桥杯
问题描述 s01串初始为"0" 按以下方式变换 0变1,1变01 输入格式 1个整数(0~19) 输出格式 n次变换后s01串 样例输入 3 样例输出 101 数据规模和约定 0~ ...
- CCP 协议
转载 1. CCP协议概述 CCP(CAN Calibration Protocol)是一种基于CAN总线的匹配标定协议.ECU都需要经过匹配标定的过程,从而确定其运行参数和控制参数.有时为了实现对 ...
- Eclipse中配置使用本地schema或dtd文件
问题:在设备不能正常联网的情况下,无法获取到网络上的 dtd 或 schema,编写配置文件的 XML 文档就没有了提示功能. 一般情况下,下载的 Jar 包或者 Zip 包中都会包含需要的 sche ...
- day18-5个内置方法
# 1. __str__方法: 必须return class Goods: def __str__(self): return 'apple' g = Goods() print(g) #apple, ...
- EF 执行存储过程
- JDK5.0 Annotation学习笔记(一)
背景知识: 从JDK5开始提供名为Annotation(注释)的功能,它被定义为JSR-175规范.注释是以"@注释名"在代码中存在的,还可以添加一些参数值,例如: ...
- openssl 密钥注意
使用openssl生成的密钥,在对加密字符串进行数字签名的时候,程序一直报错,错误异常: algid parse error, not a sequence 其原因是因为,openssl生成的私钥没 ...