实验十一 引用与复制构造函数
一.实验目的
1、 掌握引用的概念及应用,掌握引用作为函数参数的方法。 2、 学会编写与应用复制构造函数。 二. 实验内容
1、范例:编写一个函数,其原型为:void Index(int a[], int n,int & sub),其功能是,在大小为n的数组a中,查找某个数sub,若找到,将其下标存放在sub中,若没找到,将-1存放在sub中,在主调函数中通过判断值来判断数组中是否有该数。在这里,sub是引用类型的参数,但起返回值的作用。
【要求】修改主程序连续查找数字的循环语句,使程序能在输入特定数字后退出循环。 【程序】
【输入】19 【输出】:
1
2、一个声明为返回引用的函数,既可以作为右值出现在赋值号的右边,也可以作为左值出现在赋值号的左边。下面是一个函数调用本身作为左值的例子。 【程序】
【输入】无 【输出】:
【注意】由于函数index()是返回引用的类型,所以该函数调用可以作为一个左值,
程序的表达式index(3)=16 将16 赋给左边的函数调用,由于该函数调用返回对array[3]的引用,所以可以将array[3]赋新值。该程序运行的结果将使得整型数组array中的各元素值变为:
2,4,6,16,10。
3、为矩形类定义复制构造函数。矩形类见主教材的例4.2. 【程序】
2
【输入】:无
3
【输出】:
4、编程:将实验十中的分数类的分数类型参数改为引用,并添加复制构造函数。 First,对集合类修改如下内容: void Copy(set &); bool Equal(set &);
void intersect(set &,set &); ErrCode Union(set &,set &); Bool Contain(set &); 复制构造函数为: set::set(set &s){ num=s.num;
for(int i=0;i++;i Second,对分数类修改如下内容: fraction add(fraction &); fraction sub(fraction &); fraction mul(fraction &); fraction div(fraction &); 4 bool equal(fraction &); bool greaterThan9 fraction &); bool lessThan(fraction &); 构造函数如下: Fraction::fraction(fraction & f){ above=f.above;below=f.below; } 实验十二 运算符重载 一、实验目的 1. 掌握运算符重载为成员函数的方法 2. 理解友元函数和友元类 3. 掌握运算符重载为友元函数的方法 4. 使用静态数据成员 二 、实验内容 1.范例:为主教材例4.2的Rectangle类增加加减复合赋值函数和加、减运算符重载函数。加、减复合赋值函数用于固定长方形的左上角,对右上角的坐标进行加、减运算,使新矩形的长宽为原来两个矩形长宽之和或差。将加减复合赋值函数定义为成员函数,将两个矩形加减运算定义为友元函数。 【程序】: //rect.h 5