C++实验1112.docx
- 文档编号:17125769
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:12
- 大小:700.59KB
C++实验1112.docx
《C++实验1112.docx》由会员分享,可在线阅读,更多相关《C++实验1112.docx(12页珍藏版)》请在冰点文库上搜索。
C++实验1112
实验十一引用与复制构造函数
一.实验目的
1、掌握引用的概念及应用,掌握引用作为函数参数的方法。
2、学会编写与应用复制构造函数。
二.实验内容
1、范例:
编写一个函数,其原型为:
voidIndex(inta[],intn,int&sub),其功能是,在大小为n的数组a中,查找某个数sub,若找到,将其下标存放在sub中,若没找到,将-1存放在sub中,在主调函数中通过判断值来判断数组中是否有该数。
在这里,sub是引用类型的参数,但起返回值的作用。
【要求】修改主程序连续查找数字的循环语句,使程序能在输入特定数字后退出循环。
【程序】
【输入】19
【输出】:
2、一个声明为返回引用的函数,既可以作为右值出现在赋值号的右边,也可以作为左值出现在赋值号的左边。
下面是一个函数调用本身作为左值的例子。
【程序】
【输入】无
【输出】:
【注意】由于函数index()是返回引用的类型,所以该函数调用可以作为一个左值,
程序的表达式index(3)=16将16赋给左边的函数调用,由于该函数调用返回对array[3]的引用,所以可以将array[3]赋新值。
该程序运行的结果将使得整型数组array中的各元素值变为:
2,4,6,16,10。
3、为矩形类定义复制构造函数。
矩形类见主教材的例4.2.
【程序】
【输入】:
无
【输出】:
4、编程:
将实验十中的分数类的分数类型参数改为引用,并添加复制构造函数。
First,对集合类修改如下内容:
voidCopy(set&);
boolEqual(set&);
voidintersect(set&,set&);
ErrCodeUnion(set&,set&);
BoolContain(set&);
复制构造函数为:
set:
:
set(set&s){
num=s.num;
for(inti=0;i++;i elements[i]=s.elements[i]; } Second,对分数类修改如下内容: fractionadd(fraction&); fractionsub(fraction&); fractionmul(fraction&); fractiondiv(fraction&); boolequal(fraction&); boolgreaterThan9fraction&); boollessThan(fraction&); 构造函数如下: Fraction: : fraction(fraction&f){ above=f.above;below=f.below; } 实验十二运算符重载 一、实验目的 1.掌握运算符重载为成员函数的方法 2.理解友元函数和友元类 3.掌握运算符重载为友元函数的方法 4.使用静态数据成员 二、实验内容 1.范例: 为主教材例4.2的Rectangle类增加加减复合赋值函数和加、减运算符重载函数。 加、减复合赋值函数用于固定长方形的左上角,对右上角的坐标进行加、减运算,使新矩形的长宽为原来两个矩形长宽之和或差。 将加减复合赋值函数定义为成员函数,将两个矩形加减运算定义为友元函数。 【程序】: //rect.h //rect.cpp //Exp12_1.cpp 【输入】: 无 【输出】: 2.编程: 修改上题,要求如下: (1)将加减运算重载为成员函数 (2)为矩形类再增加一个静态数据成员Counter,统计共产生了多少个矩形对象。 为Counter添加定义、赋初值以及随程序运行而变化的代码,并在main()函数中将其输出。 【程序】: 【输入】: 无 【输出】: 5.修改实验十题2中的分数类,将比较、加、减、乘、除改为重载的运算符 【程序】: 【输入】: 无 【输出】:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 实验 1112