C++primer: 引用&与 const 引用

1.什么是引用?

引用就是对象的另外一个名字。在实际程序中,引用主要用作函数的形式参数。

引用是一种复合类型,通过在变量名前面添加“&”符号来定义。复合类型是指用其他类型定义的类型。在引用的情况下,每一种引用类型都“关联到”某一其他类型。不能定义引用类型的引用,但是可以定义任何其他类型的引用。

引用必须用与该引用同类型的对象初始化:

int ival = 1024;
int& refVal = ival;// ok:refVal refer to ival
int& refVal2; //error: a reference must be innitialized
int& refVal3 =10; //error: cannot take type"int" to "int&"

引用就是一个别名!!!

因为引用只是他绑定的对象的另一个名字,作用在引用上的所有操作事实上都是作用在该引用绑定的对象上!!!

2.如何定义多个引用?

C++允许在一个定义行中定义多个引用。但是,必须在每个引用标识符前添加“&”符号:

3. const 引用

const引用是指向const类型的引用!

const int ival = 1024;
const int& refVal = ival; // ok: both reference and object are const
int& refVal2 = ival; // erroe: non const reference to a const object

经过const限定符修订后,我们可以读取但是不能修改refVal,因此,任何对refVal得再次赋值都是非法的。这个限定是有意义的,不能直接对ival赋值,因此不能通过refVal来修改ival;

经过const限定后,我们就可以初始化为右值,如字面值常量:

int ival = 42;
// legal for const reference only
const int& refVal = 42;
const int& refVal = ival +1;

需要注意的是,同样的初始化方法对于非const引用是不合法的,并且会导致编译的错误。

时间: 2024-08-05 07:48:52

C++primer: 引用&与 const 引用的相关文章

C++ Primer 学习笔记_17_从C到C++(3)--引用、const引用、引用传递、引用作为函数返回值、引用与指针区别

欢迎大家阅读参考,如有错误或疑问请留言纠正,谢谢 一.引用 1.引用是给一个变量起别名 变量: 名称 空间 引用: 引用不是变量 引用仅仅是变量的别名 引用没有自己独立的空间 引用要与它所引用的变量共享空间 对引用所做的改变实际上是对它所引用的变量的改变 引用在定义的时候必须要进行初始化 引用一经初始化,不能重新指向其他变量 2.定义引用的一般格式: (1)类型  &引用名 = 变量名: (2)例如: int a=1; int &b=a; // b是a的别名,因此a和b是同一个单元 (3)

C++ 中有关const引用的一点小知识

在读<C++ Primer>时,发现之前对const的概念不是很清晰,只知道如何去使用,于是翻开const引用部分又阅读了一遍,发现有两点自己要注意的地方 1.const限定的对象不可以初始化非const引用 ex. 1 const int src = 512; 2 const int &ok_dest = src; //ok: 引用和初始化对象都是const 3 int &err_dest = src; //error : 引用为非const 原因很简单, src 是不可以被

(4)风色从零单排《C++ Primer》 变量,引用,指针

从零单排<C++ Primer> --(4)变量,引用,指针   变量的初始化 所谓变量的初始化,指在创建变量的同时给予值. 初始化方法: int units_sold = 0; int units_sold = {0}; int units_sold{0}; int units_sold{0}; long double ld = 3.1415926536: int a{ld}, b = {ld}; //error:narrowing conversion required int c(ld)

让你彻底弄懂指针、引用与const

今天重温了一下C++ Primer,对上面三个概念有了更清晰的认识,自我认为已经有了比较全面的理解了,所以赶紧记录下来,也请大家批评指正. 1.引用 引用,简单来说就是为对象起了一个别名,可以用别名来等同于操作对象,通过将声明符写成&d的形式来定义引用类型,其中d是声明的变量名,即引用变量的别名: int i =1; int &r = i; //r指向i(r是i的别名,可以通过操作r来改变i的值). r=2; cout<<r<<" "<&l

引用和const的一些

一,引用:某个变量的引用等价于这个变量,是这个变量的一个别名. #include<iostream> int main() { int a=2,b=1; int &c=a;//(1)定义引用时一定要初始化 c=3; std::cout<<a<<std::endl; c=b; //此时并不是c引用了b而是c(实际上是a变量的值)的值变为了b变量的值,并不能改变c的引用 //(2)引用一经初始化就不会再引用其他的变量了. std::cout<<a<

非const引用不能指向临时变量

没找到具体原因,MSDN看到下面这句,VC是从2008才有这一限制的,感觉就是从语法上对临时变量增加了限定,因为一般说来修改一个临时变量是毫无意义的,通过增加限定,强调临时变量只读语义.虽然实际上修改临时变量并不会有问题. Visual Studio 2008 In previous releases of Visual C++, non-const references could be bound to temporary objects. Now, temporary objects ca

深入学习 const指针,const引用

指针和引用的区别: 1.指针可以为空,引用不可以为空. 2.指针初始化后可以重新指向新对象,引用初始化以为不可以重新绑定新对象, 3.指针可以在初始化时赋值,可以初始化以后通过赋值运算符(=)赋值:引用只能在初始化时赋值. 4.指针是个实体(占内存4byte),引用只是个别名(不占内存) 5.指针sizeof是4byte,引用sizeof是绑定对象的大小. 6.指针是类型安全,引用是类型安全的. const对于指针和引用的区别: int a = 1: int b = 1: const int *

引用与const

C++引用简介: 引用引入了对象的一个同义词.定义引用的表示方法与定义指针相似,只是用&代替了"*".引用是C++对c语言的重要扩充. 引用就是某一变量的一个别名,对引用的操作与对变量直接操作完全一样. 引用的声明方法:类型标识符 &引用名=目标遍历名 实例说明:         int a;         int &p_a=a; 注:(1):&在此不是求址运算,而是起标识作用. (2):类型标识符是指目标变量的类型. (3):声明引用,必须对其进程初

为什么赋值操作符函数的参数为const引用,返回值为引用

为什么赋值操作符函数的参数为const引用,返回值为引用 1.返回值类型 返回类型一般声明为类型的引用,并在函数结尾时返回实例自身的引用(即*this).这里主要有两个原因:(1)返回引用可以减少一次拷贝构造和析构函数导致不必要的开销,因为返回值类型不是引用,会创建一个匿名对象,这个匿名对象时个右值,获取return的值.(2)可以实现连续赋值 在例子中 b=c=a; 返回值不是引用类型也是可以的,其运算顺序 b=(c=a); c得到一个右值,再将右值赋给b,所以逻辑上没有问题的.但是如果是 (