湖北理工(黄石理工)C++实验 实验三多态性

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验3 多态性

实验课程名:面向对象程序设计(C++)

专业班级:09计科(一)班学号:2******** 姓名:***** 实验时间:12.6 实验地点:K4-102 指导教师:祁文青

{

cout<<"D::f3(double)"<<3*x<

}

};

int main()

{

D d;

B*pb=&d;

D*pd=&d;

pb->f1(1.23);

pb->f1(1.23);

pb->f2(1.23);

pb->f3(1.23);

pb->f3(3.14);

return 0;

}

程序的运行结果。

答:

2.编写一个程序,其中设计一个时间类Time,用来保存时、分、秒等私有数据成员,通过重载操作符“+”实现两个时间的相加。要求将小时范围限制在大于等于0,分钟范围限制在0~59,秒钟范围限制在0~59秒。

【提示】

时间类Time{

public:

Time(int h=0,int m=0,int s=0);

Time operator+(Time&);

void disptime(string);

private:

int hourse;

cout<

}

int main()

{

int hh,mm,ss;

do

{

cout<<"输入第一个时间时分秒(例如2 30 42)"<

cin>>hh>>mm>>ss;

}

while(hh<0||mm<0||mm>59||ss<0||ss>59);

Time t(hh,mm,ss);

do

{

cout<<"输入第二个时间时分秒(例如2 30 42)"<

cin>>hh>>mm>>ss;

}

while(hh<0||mm<0||mm>59||ss<0||ss>59);

Time T(hh,mm,ss),t_total;

t_total=t+T;

t_total.disptime("输出结果(时/分/秒):");

return 0;

}

程序运行结果:

3.给出下面的抽象基类container;

class container

{

protected:

double radius;

public:

container(double radius1);

virtual double surface_area()=0;

virtual double volume()=0;

};

要求建立3个继承container的派生类cube、sphere与cylinder,让每一个派生类都包含虚函数surface_area()和volume(),分别用来计算正方体、球体和圆柱体的表面积及体积。要求写出主程序,应用C++的多态性,分别计算边长为6.0的正方体、半径为5.0的球体,以及半径为5.0和高为6.0的圆柱体的表面积和体积。

实验代码:

double CylinderArea(double r, double h){ return 3.14159*r*r*2+2*3.14159*r*h;}//计算圆柱体体积double CylinderV olume(double r, double h){ return 3.14159*r*r*h;}//计算球体表面积double BallArea(double r){return 4*3.14159*r*r;}//计算球体体积double BallV olume(double r){return 4*3.14159*r*r*r/3.0;}//计算正方体表面积double CubicArea(double r){return r*r*6;}//计算正方体体积double CubicV olume(double r){return r*r*r;}//计算长方体表面积double CuboidArea(double a, double b,double c){return a*b*2+b*c*2+a*c*2;}//计算长方体体积double CuboidV olume(double a, double b, double c){return a*b*c;}

实验运行结果:

4.编写一个程序,用于进行集合的并、差和交运算。例如输入整数集合{9 5 4 3 6 7}和{2 4 6 9 },计算出它们进行集合的并、差和交运算后的结果。

【提示】

i.可用以下表达式实现整数集合的基本运算:

s1+s2 两个整数集合的并运算

s1-s2 两个整数集合的差运算

s1*s2 两个整数集合的交运算

ii.参考以下Set类的框架,用于完成集合基本运算所需的各项功能。

class set{

public:

set::set();

void set::input(int d);

int set::length();

相关文档
最新文档