C++之引用
引用的基本语法
就是在原有的变量声明上 加多了一个&号
//以上省略部分必须的语法
int a=10;
int &b = a;//给a变量起了个别名
cout << "b=" << b <<endl;
//这里b就是a的别名,用b等于a;
//打印出来就是a的值
//
引用的基本注意事项
引用必须得初始化
//引用不能不初始化
int &b;这样的代码是不被允许的。
引用在初始化之后不能够再更换别名对象
int a=10;
int c=20;
int &b = a;//给a变量起了个别名
b = c;
//这样操作很明显是赋值操作
引用的主要用途
引用作为函数参数传递
值传递(复习)
众所周知(bushi,值传递的话,形参是无法修饰实参的。即–形参在作用域里的修改并没有改动到实参本身。
地址传递【指针(复习)】
众所周知,如果是地址传递参数的话,形参当然是能够修饰实参的。即…
那么 地址传递的话 我们一直都知道事实上才传递过程中常常会遇到语法复杂,容易留下
难以发现的bug。
总的来说就是使用难度高。
引用作为函数参数传递
引用总的来说,既能够满足形参修饰到实参。
同时操作难度又比使用指针小很多
避免了很多bug。
可以说是c++中特别适用于函数参数传递的特性了
常量引用
指向常量
倘若你用了引用传递,然后还想像值传递那样传常数
会发现报错。
原因就是引用需要是内存中一段有效部分的别名
而常数显然没有
所以需要使用常量引用
也就是-- const int &
实现原理:
底层有一个中间变量temp 存储常数 然后 引用成为这个中间变量的别名
常量引用应用到函数参数传递当中
函数参数传递的话,有些时候我们不希望引用过程中发生形参修饰了实参的事件(似乎有点反其道而行) 其实不会,就是设计出来防止这种情况发生的,因为原来C语言中值传递没那么全面。
而我们在使用引用在函数参数传递, 如果觉得引用在过程中不会有修饰实参,或者是不应该有修饰实参的话 就应该或者说是必须使用 const int&。
引用本质
一句话总结:引用本质是常量指针: const int*
常量指针: 指针指向的地址不变
- 区分指针常量、常量指针等概念。
总结:
凭借看完视频的记忆总结内容,感觉内容还是不少,下次得总结快点。