本质
- 通过指针实现,所以本质就是指针
意义
- 是某个变量的代表,因此下面的代码中,x的值为5。在给x赋值后i和x都是6。
1 | int i = 5; |
编译器的一些做法
- 以一下代码为例,如果有一个变量b是a的引用,那么有
sizeof(a) == sizeof(b)
而且&a == &b
。 - 上面也说了引用是个指针,在32位系统中sizeof指针应该是4个byte。但是因为b是a的引用,它代表了a,所以代码中
sizeof(b)
是16byte。而且a和b取地址得到的值也是一样的,虽然我们知道这个在内存中肯定是不一样的。只不过编译器做了这些的处理。
1 | typedef struct A {int a, b, c, d}; |
reference的常用方式
- 主要用于参数的修饰,很少用来声明变量。
- 参考以下的代码,在使用上引用传递在写法上和值传递是一样的,当然本质不同。但是从代码的优雅性上引用会比指针的参数形式好。
1 | void Func1 (Cls a) |
- 需要注意以下两个函数不能同时定义,因为在调用上会出现歧义。但是const修饰符可以实现重载。
1 | void Func (Cls a) |