c++实验题教学内容

精品文档

cout<<\删除部分元素后:\cout<<\s.print(); cout<<\s1.print(); cout<<\s2.print(); return 0; }

收集于网络,如有侵权请联系管理员删除

精品文档

实验十一 引用与复制构造函数

一.实验目的

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(Rectangle & rec); 在rect.cpp文件中添加以下代码:

Rectangle::Rectangle(Rectangle & rec){ left=rec.left; top=rec.top; right=rec.right ; bottom=rec.bottom ; }//复制构造函数

在main( )函数中添加以下代码: Rectangle rect2(rect1);

cout < < ”由复制构造函数生成的rect2:”<<< endl;

收集于网络,如有侵权请联系管理员删除

精品文档

rect2.Show( );

这里的复制构造函数是默认的按成员语义定义的,可以不写,系统会自动提供。

★选作题 4、编程:将实验十中的分数类的分数类型参数改为引用,并添加复制构造函数。

实验十二 运算符重载

一、 实验目的

1、 掌握运算符重载为成员函数的方法

2、 理解友元函数和友元类。

3、 掌握运算符重载为友元函数的方法。

4、 使用静态数据成员。

二、 实验内容

1、为主教材中例4.2 的Rectangle类增加加减复合赋值和加减运算符重载函数。加减复合赋值语义定义为固定长方形的左上角,

对右下角的坐标进行加减运算,使新矩形的长宽为原两矩形长宽之和或差,对加和减复合赋值定义为成员函数。两个矩形加减运算定义为友元函数。

【要求】 (1) 主程序如下,请完成类的定义及相关成员函数和友元函数的实现,并分别保存为rect.h文件和rect.cpp文件。

收集于网络,如有侵权请联系管理员删除

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4