之前的笔记搬运
C++的引用机制
引用就是某一变量(目标)的一个别名, 对引用的操作与对变量直接操作完全一样。
引用的声明方法:类型 &引用名=目标变量名;
注意这里的&可不是取地址符号, 在变量定义时并且在&符号是在类型后,
在C++中这就是引用语句.
1 | int a; |
引用的一些特性:
1.不是参数必须在初始化时赋值, 不可以是常量, 必须是变量
2.初始化后不可修改
3.引用变量在作为参数时, 不可以传递常量, 只能是变量,
4.在加上const修饰后可以传递常量
5.引用只能使用一级, 不可以使用二级引用 如:&&
引用作为函数形参:
function (type& Var1, type& Var2)
调用函数时int a, b; function(a,b)
这样在函数内对Var1和2变量进行修改, 同时也会影响到实参a和b
用指针也可以做到这种功能
function (type p Var1, type& pVar2)
调用函数时int a, b; function(&a,&b)
但是在编译后的指定代码, 这两种写法是相同的, 没有任何差别, 也侧面说明引用其实就是对指针的一种升级, 比较可以发现, 引用比指针代码更加简洁
引用变量在作为参数时, 不可以传递常量, 只能是变量
如: function (type& Var1)
调用函数时, 不可以这么写: function(1);
而加上const修饰后可以传递常量
如: function (const type& Var1)
调用函数时 function(1); 就可以编译通过了
其原理就是在调用者的栈空间申请一块const type属性的内存, 把这块内存的地址做为参数传递给被调用者, 也就是void function(const TYPE& Var);这个函数