关闭

C++ 实验八

599人阅读 评论(0) 收藏 举报
分类:


实验八
多态实现
【实验目的】
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;
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:17317次
    • 积分:351
    • 等级:
    • 排名:千里之外
    • 原创:19篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章存档
    最新评论