C++入门经典 笔记 (第十二章)创建引用
来源:互联网 发布:淘宝我是卖家在哪里找 编辑:程序博客网 时间:2024/06/07 06:49
这一章主要讲引用,其用处和前面讲的指针差不多,但用法要比指针容易些,总的来讲,引用就是一个变量的别名。创建引用时,使用另一个对象(目标)的名称来初始化它,从此以后,该引用就像是这个目标的另一个名称,对引用执行的任何操作实际上针对的就是目标。指针和引用的区别就是:指针是存储另一个对象的地址的变量,而引用是对象的别名。
创建引用
要创建引用,需要指定目标对象的类型、引用运算符(&)和引用名。如:int &rSomeRef = someint;这句语句的含义是,rSomeRef是一个int引用,被初始化为指向someint。
如果声明了引用但没有初始化,就将导致编译器出错,引用必须初始化。注意:这里的引用运算符(&)和前面所讲的地址运算符(&)是同一个符号,根据程序的上下文区分。
将地址运算符用于引用
如:int &rSomeRef = intone;
std ::cout <<&intone; //输出变量intone的地址
std ::cout <<&rSomeRef; //也会输出变量intone的地址,而不是rSomeRef的地址
在C++中,无法获取引用本身的地址,因为它不像指针或其他变量的地址那样有意义。引用是在创建时初始化的,总是目标的同义词,通常,在使用引用时,不将地址运算符用于它,而像使用目标变量那样使用引用,不能给引用重新赋值,他始终是目标变量的别名。
可引用的目标
可引用任何对象,包括用户自己定义的对象。注意:我们创建的是指向对象的引用,而不是指向类或数据类型(如int)的对象。所以以下代码是错的:
int &rIntRef = int; //错误
应该改为:int age=20;
int &rIntRef = age;
同样,当我们自己创建了cat类后,这些代码也是错的:
cat &rCatRef = cat; //错误
应该改为:cat Frisky;
cat &rCatRef = Frisky;
可以像使用对象那样使用指向对象的引用:访问成员数据和成员函数,使用类成员访问运算符(.),如:rCatRef.age,rCatRef.voice()等。
空指针和空引用
指针未初始化或被删除时,应将NULL赋给它,但对于引用来说,引用不能为空,让引用指向空对象的程序是非法的。
按引用传递函数参数
在第五章讲到,函数的参数是按值传递(对象值的备份)的,返回的结果不能修改原来的值,但按引用传递的方式就不同了,它有两种方式:使用指针和使用引用。他们的语法不同,但效果相同:不是在函数作用域内创建对象值的备份,而是将原始对象传递给函数。通过按引用传递对象,可让函数修改指向的对象。使用指针,传递的实际上是对象的地址,因此函数可直接操作该地址处的值。
如果函数是使用指针传递参数,则调用函数时,参数为变量的地址(如:&i);如果函数是是使用引用传递参数,则调用函数时,参数为变量(如:i)。
- C++入门经典 笔记 (第十二章)创建引用
- C#入门经典第十二章
- C++入门经典 笔记 (第八章)创建基本类
- C++入门经典 笔记 (第十章)创建指针
- C++入门经典 笔记 (第二十三章)创建模板
- C++入门经典 笔记 (第十三章)高级引用和指针
- (福利)”C++Primer笔记“和”Java经典入门笔记“
- 算法竞赛入门经典-学习笔记1(c语言)
- Objective-C学习笔记第十二章类别
- C++primer 第十二章笔记 初稿
- 第十二章,随机数(C++)
- C#(1)经典入门
- Perl语言入门笔记 第十二章 文件测试
- SQL Server 2008编程入门经典笔记(第五章:创建和修改数据表)
- SQL Server 2008编程入门经典笔记:创建和修改数据库、表(未完成)
- 《python编程入门经典》学习笔记第九章(一)
- 算法入门经典第八章学习笔记(上)
- 算法入门经典第八章学习笔记(中)
- bzoj-3238 差异
- 源码安装Qt 5.4.2
- Filter(过滤器)学习
- 老毛桃u盘启动盘制作工具怎么用及重装系统步骤(二)
- linux下gcc的安装
- C++入门经典 笔记 (第十二章)创建引用
- 黑马程序员----c基础笔记----函数部分
- org.tuckey.web.filters.urlrewrite.UrlRewriteFilter
- C#动态二维数组
- Web app root system property already set to different value:
- 古老的NET架构部署方案
- 16.解释器模式
- Leetcode 274 : H-index
- R con not resolved of types