实验十一 引用与复制构造函数
一.实验目的
1、 掌握引用的概念及应用,掌握引用作为函数参数的方法。 2、 学会编写与应用复制构造函数。
二. 实验内容
1、范例:编写一个函数,其原型为:void Index(int a[], int n,int & sub),其功能是,在大小为n的数组a中,查找某个数sub,
若找到,将其下标存放在sub中,若没找到,将-1存放在sub中,在主调函数中通过判断值来判断数组中是否有该数。在这里,sub是引用类型的参数,但起返回值的作用。
【程序】
【要求】
(1)修改主程序连续查找数字的循环语句,使程序能在输入特定数字后退出循环。
(2)将void Index(int a[], int n,int & sub); 改为void Index(int a[], int n,int sub);程序还能正确执行吗?试分析其结果并解释。
(3)在上述修改的基础上如果结果不正确,怎样修改可以同样得到正确的结果。
2、一个声明为返回引用的函数,既可以作为右值出现在赋值号的右边,也可以作为左值出现在赋值号的左边。下面是一个函数调用本身作为左值的例子。
【要求】
修改程序使用非返回引用的函数实现上述功能。试分析两者之间的区别。
3、为矩形类定义复制构造函数。矩形类见主教材的例4.2.
在rect.h 头文件中的类rect定义中加入以下代码:
Rectangle(const Rectangle & rhs);
在rect.cpp文件中添加以下代码:
Rectangle::Rectangle(const Rectangle & rhs):m_left(rhs.m_left),m_top(rhs.m_top),m_right(rhs.m_right),m_bottom(rhs.m_bottom){
}//复制构造函数
在main( )函数中添加以下代码,单步调试时进入复制构造函数,查看其调用情况:
Rectangle rect2(rect1);
cout < < ”由复制构造函数生成的rect2:”<<< endl;
rect2.Show( );