引用就像是能够自动被编译器间接引用的常量型指针。
c++不允许通过 void* “中转”,使得不同类型指针相互赋值,相对于c 来说,是一种类型要求更强的语言。
引用不可以只声明,而不初始化。
引用 《------》存储单元
应用要点:
任何引用必须和存储单元联系,访问引用时就是在访问这个存储单元。这是一个奇特的指针。
(1)引用被创建时必须被初始化(指针可以在任何时候初始化)
(2)一旦引用被初始化为指向一个对象,就不能改变为另一个对象的引用 (指针则可以任何时候指向另一个对象)
(3) 不可能有NULL引用,必须确保引用是和一块合法的存储单元联系。
e.g.
int x = 10
int &a = x;
(gdb) p a
$1 = (int &)@0x100407010: 10
(gdb) p &a
$2 = (int *) 0x100407010 <x>
(gdb) p *&a
$3 = 10
注意:
int y = 111;
int * p = &y;
&a = p 编译错误:赋值运算 左操作数必须是左值
函数引用
17 int & j(){
18