实验报告C++4Word文档格式.docx

上传人:b****6 文档编号:18856151 上传时间:2023-01-01 格式:DOCX 页数:12 大小:95.71KB
下载 相关 举报
实验报告C++4Word文档格式.docx_第1页
第1页 / 共12页
实验报告C++4Word文档格式.docx_第2页
第2页 / 共12页
实验报告C++4Word文档格式.docx_第3页
第3页 / 共12页
实验报告C++4Word文档格式.docx_第4页
第4页 / 共12页
实验报告C++4Word文档格式.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

实验报告C++4Word文档格式.docx

《实验报告C++4Word文档格式.docx》由会员分享,可在线阅读,更多相关《实验报告C++4Word文档格式.docx(12页珍藏版)》请在冰豆网上搜索。

实验报告C++4Word文档格式.docx

十一、实验室内一切物品未经允许严禁带出室外,确需带出,必须经过批准并办理手续。

预习报告

实验基本原理与设计(包括实验方案设计、实验手段的确定、电路原理图设计或算法描述)

1、编写一个程序,实现如下功能:

基类为point类,数据为点的横、纵坐标,实现数据初

始化、返回横、纵坐标,对流插入运算符重载输出点的信息;

派生类为line类,数据包含:

从点类继承的线的起始坐标,基类的子对象(线的终点坐标),线的颜色,实现数据初始化、对流插入运算符重载输出线的信息(包含点的起始和终点坐标,线的距离和颜色;

point类和line类中均有计算距离的函数。

输出点和线的信息,以及利用多态性实现输出点和线的距离。

类的设计如下:

基类:

point类

数据:

点的横坐标和纵坐标(x,y)

成员函数:

(1)构造函数:

初始化工作

(2)intgetx():

返回横坐标

(3)intgety():

返回纵坐标

(4)virtualdoubledistance()返回值为0.0

(5)对流插入运算符重载输出点的信息

派生类:

line类

pointb;

//子对象,终点坐标

charcolor[10];

//线的颜色

初始化:

基类数据(点的起始坐标),子对象(点的终点坐标),线的颜色的初始化virtualdoubledistance();

//计算线的坐标

(2)对流插入运算符重载输出线的信息(起始坐标,终点坐标,颜色,距离)

2、编写一个程序,定义抽象类shape,由它派生出5个派生类:

circle(圆形),square(正方形),rectangle(矩形),trapezoid(梯形),triangle(三角性)。

用虚函数分别计算几种图形面积,并求他们的和。

要求用基类指针数组,使它每一个元素指向一个派生类对象。

类的数据:

shape:

面积

circle(圆形)半径doublera;

square(正方形)边长doubleside;

rectangle(矩形)长,宽doublewide;

doubleheight;

trapezoid(梯形)上底,下底,高doubletop;

doublebottom;

triangle(三角形)底,高doubleheight;

doublewidth;

面积virtualdoublearea()const=0;

circle(圆形)半径:

circle(doubler):

ra(r){};

返回面积:

virtualdoublearea()const{returnpi*ra*ra;

}

square(正方形)半径square(doubles):

side(s){};

返回面积virtualdoublearea()const{returnside*side;

rectangle(矩形)长宽rectangle(doublew,doubleh):

wide(w),height(h){};

返回面积virtualdoublearea()const{returnwide*height;

trapezoid(梯形)上底,下底,高trapezoid(doublet,doubleb,doubleh):

top(t),bottom(b),height(h){};

返回面积virtualdoublearea()const{return(top+bottom)*height/2;

triangle(三角性)底,高trigangle(doubleh,doublew):

height(h),width(w){};

返回面积virtualdoublearea()const{returnheight*width/2;

类外函数:

输出面积voidprintarea(constshape&

s)

{cout<

<

s.area()<

endl;

1、实验目的

1、掌握多态性的概念。

2、掌握虚函数的作用及使用方法。

3、掌握纯虚函数和抽象类使用方法。

2、实验仪器设备(或软件平台)

序号

实验设备名称(或软件平台)

规格型号

备注

1

硬件

Intel:

i3处理器

WD500G硬盘

Intel(R)HDGraphics集成显卡

2

软件

WindowsXP

MicrosoftVisioc++6.0

Word2010

3

4

5

3、实验过程(包括调试方法描述、实验数据记录、实验现象记录、实验过程发现的问题等)

程序代码如下:

#include<

iostream.h>

math.h>

string.h>

classpoint

{public:

point(inta,intb):

x(a),y(b){}

intgetx(){returnx;

intgety(){returny;

virtualdoubledistance(){return0.0;

friendostream&

operator<

(ostream&

point&

);

protected:

intx;

inty;

};

ostream&

output,point&

p)

{output<

"

["

p.x<

"

p.y<

]"

returnoutput;

classline:

publicpoint

line(inta,intb,inta1,intb1,charc[]):

point(a,b),b(a1,b1)

{strcpy(color,c);

virtualdoubledistance()

{returnsqrt((x-b.getx())*(x-b.getx())+(y-gety())*(y-gety()));

line&

pointb;

output,line&

l)

起点坐标"

("

l.x<

l.y<

)"

output<

终点坐标"

l.b<

颜色"

l.color<

距离"

l.distance()<

intmain()

{

pointp(1,1);

linel(1,1,2,2,"

白色"

cout<

p;

l;

point*p1=&

点之间的距离"

p1->

distance()<

p1=&

线之间的距离"

return0;

}

iostream>

usingnamespacestd;

constdoublepi=3.1416;

classshape

public:

virtualdoublearea()const=0;

classcircle:

publicshape

circle(doubler):

virtualdoublearea()const{returnpi*ra*ra;

doublera;

classsquare:

square(doubles):

virtualdoublearea()const{returnside*side;

doubleside;

classrectangle:

rectangle(doublew,doubleh):

virtualdoublearea()const{returnwide*height;

doublewide;

doubleheight;

classtrapezoid:

trapezoid(doublet,doubleb,doubleh):

virtualdoublearea()const{return(top+bottom)*height/2;

doubletop;

doublebottom;

classtrigangle:

trigangle(doubleh,doublew):

virtualdoublearea()const{returnheight*width/2;

doublewidth;

voidprintarea(constshape&

circlecircle(2.2);

squaresquare(2.2);

rectanglerectangle(4.5,8.4);

trapezoidtrapezoid(2.0,4.5,3.2);

trigangletrigangle(4.5,8.4);

shape*pt[5]={&

circle,&

square,&

rectangle,&

trapezoid,&

trigangle};

doubleareas=0.0;

for(inti=0;

i<

5;

i++)

{areas=areas+pt[i]->

area();

cout<

totalofallareas="

areas<

return0;

4、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)

程序结果如下:

五、实验总结(心得体会)

1、掌握虚析构函数的实验。

析构函数的作用是在对象撤销之前做必要的清理现场的工作。

当派生类的对象从内存中撤销时一般先调用派生类的析构函数,然后再调用基类的析构函数。

但是用new运算符建立了临时对象,若基类中有析构函数,并且定义了一个执行该基类的指针变量。

程序用带指针参数的delete运算符撤销对象时,会发生一个情况:

系统会只执行基类的析构函数,而不执行派生类的析构函数。

2、虚函数的使用方法:

(1)在基类中用virtual声明成员函数为虚函数。

在类外定义虚函数时,不必再加vietual。

(2)在派生类中重新定义此函数,函数名,函数类型,函数参数个数和类型必须与基类的虚函数相同,根据派生类的需要重新定义函数体。

(3)定义一个纸箱基类对象的指针变量,并使它指向同一类族中需要调用该函数的对象。

(4)通过该指针变量调用此虚函数,此时调用的就是指针变量指向的对象的同名函数。

3、掌握静态关联和动态关联的概念和用法。

确定调用的具体对象的过程为关联。

函数重载和通过对象名调用的虚函数,在编译时即可确定其调用的虚函数属于哪一个类,其过程为静态关联。

由于在运行阶段把虚函数和类对象绑定在一起,过程为动态关联。

4、掌握纯虚函数和抽象类的概念和用法。

纯虚函数的作用是在基类中为其派生类保留一个函数的名字,以便派生类根据需要对它进行定义。

如果在一个类中声明了纯虚函数,而在其派生类中没有对该函数定义,则该函数在派生类中仍然为纯虚函数。

不用来定义对象而只作为一种基本类型作为继承的类,称为抽象类。

凡是包含纯虚函数的类都是抽象类。

因为纯虚函数是不能被调用的,包含纯虚函数的类时无法建立对象的。

抽象类的作用是作为一个类族的共同基类,或者说,为一个类族提供一个公共接口。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1