1. 相关概念
C++引用分两种:lvalue reference(左值引用)和rvalue reference(右值引用)。本文讨论的是lvalue reference(左值引用)。
1.1 lvalue(左值)和rvalue(右值)
在讨论C++引用之前,我们需要先搞清楚两个概念:lvalue(左值)和rvalue(右值)。
lvalue(左值)和rvalue(右值)是对每个C++表达式值类别的区分。
一个表达式的值类别是左值,那么这个表达式有两点性质:1)可以放在赋值运算符‘=‘的左边;2)可以用取地址运算符‘&‘取地址。
对象(内嵌类型定义的变量,复合类型定义的变量(指针,数组),类类型定义的对象)是左值表达式。
2. 左值引用
引用是对象的一个别名,引用本身不是一个对象。
也就是说,
1)我们对引用的操作就是对对象的操作(基本的算术运算)。可以理解为通过引用和通过对象对内存内容的操作是透明的,一方改变内存内容,另一方是可见的。
2)引用只能指向对象,不能指向常量或者表达式。
由于引用本身不是一个对象,因此不存在引用的引用。
引用的声明
Type &r = object;
1)引用在声明的时候就必须初始化,且初始化时引用的类型和对象的类型必须相等,否则编译时报错;
2)一旦引用了一个对象,就不能再引用另一个对象;
3)对引用或者对象重新进行赋值时,赋值号两边的类型可以不同,但会产生截断。
原文地址:https://www.cnblogs.com/GunW/p/11402722.html
时间: 2024-10-09 20:33:04