C++ 实验八

原创 2013年12月03日 11:27:17


实验八
多态实现
【实验目的】
1、 了解继承和多态的作用和实现方式,掌握动态联编方法;
2、 掌握使用C++语言的抽象类和派生类实现继承性;
【实验内容】
1、 设计一个立体图形类(CStereoShape类),并满足如下要求:
•CStereoShape类有一个纯虚函数GetArea,能够获取立方体的表面积;
•CStereoShape类有一个纯虚函数GetVolume,能够获取立方体的体积;
2、 设计一个立方体类(CCube类),该类继承于CStereoShape类,并满足如下
要求:
•CCube类有一个带参数的构造函数,其参数分别对应于立方体的长、宽、
高。
•用一个成员函数来实现对立方体长、宽、高的设置。
•重载CStereoShape类的GetArea和GetVolume,分别完成立方体的表面积和
体积的计算。
3、 设计一个球体类 (CSphere),该类继承于CStereoShape类,并满足如下要求:
•CSphere类有一个带参数的构造函数,其参数对应于球体的半径。
•用一个成员函数来实现对球体半径的设置。
•重载CStereoShape类的GetArea和GetVolume,分别完成球体的表面积和体
积的计算。
4、 实现一个main函数,在main函数中至少完成如下工作:
•实例化一个CCube类的对象a_cube和CSphere类的对象c_sphere;
•定义一个CStereoShape类的指针p;
•将a_cube的长、 宽和高分别设置为4、 5和6; 将p指向a_cube, 通过p将a_cube
的表面积和体积打印到屏幕上;
•将c_sphere的半径设置为7;将p指向c_sphere,通过p将c_sphere的表面积和
体积打印到屏幕上。

#include <iostream>
using namespace std;
const double PI=3.14;
class CStereoShape{
public:
	virtual double GetArea()=0;
	virtual ~CStereoShape(){}	virtual double GetVolume()=0;
};
class CCube:public CStereoShape{
public:
	CCube(double c,double k,double g){
		setCKG(c,k,g);
	}
	void setCKG(double c,double k,double g){
		length=c;
		width=k;
		hight=g;
	}
	double GetArea(){
		return (length*width+width*hight+length*hight)*2;
	}
	double GetVolume(){
		return hight*length*width;
	}
private:
	double length,width,hight;
};
class CSphere :public CStereoShape{

public:
	CSphere(double _radius){
		radius=_radius;
	}
	void setRadius(double _radius){
		radius=_radius;
	}
	double GetArea(){
		return PI*radius*radius;
	}
	double GetVolume(){
		return 4.0/3*PI*radius*radius*radius;
	}
private:
	double radius;
};
int main(){
	CCube a_cube(4,5,6);
	CSphere c_sphere(7);
	CStereoShape *p;
	p=&a_cube;
	cout<<"a_cube  \tArea:"<<p->GetArea()<<"\tVolume"<<p->GetVolume()<<endl;
	p=&c_sphere;
	cout<<"c_sphere\tArea:"<<p->GetArea()<<"\tVolume"<<p->GetVolume()<<endl;
	return 0;
}

相关文章推荐

C++程序设计实验报告(八)

第11周报告2 实验目的:学会使用循环控制语句解决实际问题 实验内容:编程序生成一张从英尺到米的转换表 * 程序头部注释开始(为避免提交博文中遇到的问题,将用于表明注释的斜杠删除了) * ...

c++实验2-模拟ATM

程序代码:
  • my_yi
  • my_yi
  • 2016年03月24日 08:08
  • 369

C++实验4-百钱百鸡问题

一、问题及代码 /* * 文件名称: C++第4次实验 * 作 者: 龙晚秋 * 完成日期: 2016年4月21日 * 版 本 号:v1.0 * 对任务...

操作系统 单处理器进程调度模拟实验(c++)

本实验模拟了时间片轮转调度算法下的单处理机进程调度。 数据结构以进程控制块PCB为基本单位。 逻辑结构简单描述为,存在一个准备就绪的队列,用来组织PCB。 程序开始,需要输入运行时间片长度,再录...

C++实验6--数组合并

一、

c++实验3—分段函数求值

1. 问题及代码 /* * 文件名称:分段函数求值 * 作 者: 谈永胜 * 完成日期:2017 年3 月22日 * 版 本 号:v6.0 * 对任务及求解方法的描述部分:多分数段函数求值 ...

c++实验3,个人所得税

一,问题及代码 /* * 文件名称: SalaryCaculater.cpp * 作 者: 安佳航 * 完成日期: 2016 年 4 月 5 日 * 版 本 号:v1.0 ...
  • hang228
  • hang228
  • 2016年04月11日 16:37
  • 147

C++实验7-最大公约和最小公倍数

 /* * 文件名称: qg21.cop * 作    者:  李秋谷 * 完成日期:   2016   年    06月   03日 * 版 本 号:v1.0 * 对任务及求解...
  • cocoqg
  • cocoqg
  • 2016年06月03日 21:39
  • 186

实验一 C++基础练习(附答案)

最近在学习C++,这是我做的几个基础练习题,希望和大家一起交流讨论。
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++ 实验八
举报原因:
原因补充:

(最多只允许输入30个字)