欢迎来到天天文库
浏览记录
ID:57613081
大小:85.00 KB
页数:5页
时间:2020-08-29
《拷贝构造函数.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验7拷贝构造函数一、实验目的(1)掌握类的声明和对象的声明。(2)掌握拷贝构造函数的定义与使用(3)了解拷贝构造函数调用的时机二、实验内容及步骤1新建c++源文件,找到week14文件夹中的copyStruDefine.cpp文件,复制到新建的源文件中运行,将运行结果记录下来,分析程序中执行哪条语句引起拷贝构造函数被调用的,将该语句的行号记录下来。分析程序,第46条语句Pointpa(1,2)执行时会调用构造函数,第47条语句Pointpb=pa执行时会调用拷贝构造函数。2程序中添加一个distance函数,用来计算2个点之间的距离。代码如下:5运行程序,记录运行结果。分析程序,第52
2、,53条语句Pointpa(7,4);Pointpb(1,2);执行时会调用构造函数,第46,47条语句doubledx=a1.getX()-a2.getX();doubledy=a1.getY()-a2.getY();执行时会调用拷贝构造函数。3设计一个函数mirror用来返回一个点在x轴的镜像坐标,如点A坐标为(1,2),它的镜像点A’坐标为(1,-2)。5(1,2)点A(1,-2)镜像点A’分析:函数的结构分成2部分,函数头部和函数体(1)函数的函数头部分语法格式:返回类型函数名(参数)可以确定的是函数名mirror;这个函数会计算出一个点的镜像并返回,点的镜像还是一个点,因此可以
3、确定函数的返回类型是void;这个函数会将某个点的镜像计算出来,那到底计算的是那个点的镜像呢?这是不确定的,将不确定的因素定义为函数的参数,因此函数的参数类型是Point;现将函数的第一行补充完整。返回类型mirror(参数)(2)分析函数的函数体部分,即用”{}”包围的部分。我们通过参数传递接收到一个点的坐标,现在要计算另一个点的坐标(镜像点),因此需要在函数体内定义另外一个点类型的对象来存放镜像点的坐标。将镜像点的x坐标赋值为参数点的x坐标值,将镜像点的y坐标赋值为参数点的y坐标值的负数值(需要注意Point类中的x和y成员都是私有的)。将镜像点坐标赋值完成后,用return语句将镜
4、像点返回。(3)在主函数中测试mirror函数。#include#includeusingnamespacestd;/*类的函数成员-->构造函数(创建对象并赋初值)inta=10;intb=a;//创建变量b并赋初值,这个初值放在a中创建对象(新)时,构造函数的参数是对象(已存在)--拷贝构造函数*/classPoint{private:doublex;5doubley;public://拷贝构造函数是构造函数//参数和普通的构造函数不同//是同类型对象的引用参数Point(Point&q){x=q.x;y=q.y;cout<<"拷贝构造函数被调用
5、n";}Point(doublea1=0,doublea2=0){x=a1;y=a2;cout<<"构造函数被调用";}voiddisplay(){cout<<"("<6、1.getX()-a2.getX();5doubledy=a1.getY()-a2.getY();len=sqrt(dx*dx+dy*dy);cout<<"distance="<7、pa的镜像点坐标";op.mirror(pa).display();}5
6、1.getX()-a2.getX();5doubledy=a1.getY()-a2.getY();len=sqrt(dx*dx+dy*dy);cout<<"distance="<7、pa的镜像点坐标";op.mirror(pa).display();}5
7、pa的镜像点坐标";op.mirror(pa).display();}5
此文档下载收益归作者所有