C++_引用全解.ppt

  1. 1、本文档共49页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C_引用全解

补充: 引用 引用的概念 引用(reference)--一种新的概念 int a; int b=a; 首先要明确引用是一个别名。 当建立引用时,程序用另一个变量或对象(称为该引用的目标)来初始化它。 此后,引用便作为其目标的别名而使用,对引用的改变就是对目标的改变。 1、引用的声明 引用声明方式 引用类型 引用名=目标名; 此处‘’为引用运算符。 注意 引用在声明时必须对其初始化,否则将产生编译错误。 如 int b=10; int a=b;??? //建立引用a,同时用变量a对其初始化 注意 这里首先要明确引用只是其目标的别名,其本身不是值,不占存储空间。因此,建立引用只有声明,而无定义。ch9_1.cpp 1、引用的声明 注意 引用运算符与地址操作符的区别 类同于指针,一个引用运算符也只能声明一个引用。 如:int a,b;??? //并非建立两个引用,而是建立引用a和整型变量b 2、 引用的操作 引用维系一个目标(可以是变量或对象),对引用的操作,实际上就是对其维系的目标的操作。 同样,若要寻找引用的地址,将返回其目标的地址。 例子ch9_2 例子 2、 引用的操作 注意 C++没有提供访问引用本身地址的方法,引用作为目标的别名使用,其地址与目标地址一致。 引用一旦初始化,就维系在一定的目标上,任何对该引用的赋值都不能使引用维系在其它目标上。 引用和指针有很大的区别,指针是个变量,可以对其再赋值成其它的地址,而在建立引用时初始化后,该引用不会再指向其它不同的目标。 图示 图示 例子 3、 什么能被引用 若一个变量声明为T ,即引用时,它必须用T类型的变量或对象,或能够转换成T类型的对象进行初始化 例子:int in=n; 如果引用类型T的初值不是一个左值,那么将建立一个T类型的目标并用初始值初始化,那个目标的地址变成引用的值 例子 double rr=1; 解释该例: double temp; temp=double(1); double rr=temp; 指针变量的引用 问题的提出 整型变量的引用 int a int ra=a 指针变量的引用 例子 int *a; int * p=a; int b=10; p=b; 例子 图示 引用的其它注意事项 不允许对void引用 例子 void a=3 X 不能建立引用的数组 例子 int a[10]; int ra[10]=a; X 引用本身不是数据类型,所以没有引用的引用和引用的指针 例子 int a; int ra=a; int *p=ra; X 引用不能用类型来初始化 例子:int rn=int X 有空指针,没有空引用 例子 int ri=NULL; X 4、 用引用传递函数参数 1).引用传递参数 C++中,传递引用给函数与传递指针给函数的效果一样,传递的是原来的变量或对象。引用在这里具有指针的功能,但可读性比指针传递好。 比较 例:ch8_12.cpp 例:ch8_13.cpp 原型:swap(int *, int *); 调用:swap(a, b) ch9_4 原型:swap(int rx, int ry); //可读性比指针传递好 调用:swap(a, b) 2) 引用存在的问题 引用隐藏了函数所实用的参数传递类型,所以无法从所看到的函数调用判断其是传值还是传引用 例子 int a=10; int b=10; swap(a,b) 函数重载的匹配问题 void fun(int s); void fun(int t); 5、 返回多个值 函数只能返回一个值 如何实现函数返回多个值? 传指针〔回顾〕 利用引用 例子ch9_5 图示 6、 用引用返回值 函数返回值时,要生成一个值的副本 用引用返回值时,不生成值的副本 例子ch9_6(分析四种情况) 注意 不要返回不再作用域范围的变量或对象的引用 禁忌返回的引用作为一个左值进行运算 图示 7、 函数调用作为左值 函数调用可以成为左值 条件:不能将局部栈中的变量地址返回 d334.cpp 例子ch9_7是不返回引用的情况 例子ch9_8是返回引用的实现 图示 图示 8、 用const限定引用 在调用函数时,由于传值需要复制副本,当数据类型很大时,复制副本便不可取。 而当使用指针和引用来传递函数参数时,若程序不允许其指向的目标被修改,但传递的地址特征会使其目标处于被修改的危险中。 可以使用const限制指针(使用指向常量的指针)和引用。 例子ch9_9.cpp //保护实参不被修改 传递const指针 例子ch9_10.cpp//利用引用 传递const引用 例子 图示 9、 返回堆中变量的引用(略) 对

文档评论(0)

6952225 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档