【c++】引用
来源:互联网 发布:python yield 用法 编辑:程序博客网 时间:2024/04/30 06:24
C++中引用表示对象的别名,通过在变量名前加入“&”符号表示,实际引用中,引用主要用于函数参数的形参。
1、引用是别名,所有作用在引用上的操作实际都作用在引用的对象上。
int a = 0;int &b = a;//b为a的别名b = 3;cout << a << endl;//此时输出a = 3
2、引用必须初始化,表明指向那个对象,且非const引用必须以对象来初始化
const对象必须以const引用,因为const不可修改,若以非const引用,则通过修改非const引用即可修改对象值,这是不允许的。
const int a = 3;const int &b = a;
3、const引用可以初始化为不同类型的对象或初始化为右值,但是非const引用不可以
double a = 1.1;const int &b = a;//以不同类型初始化const引用合法,非const引用则不合法const int &c = 2;//以右值来初始化也是合法的,非const引用同样不合法
至于为什么const引用可以初始化为不同类型,原因如下,编译器对上述代码转换为如下形式:
int temp = a;const int &b = temp;//也就是b引用的并不是a,而是临时变量temp
所以修改a的值并不会改变b的值
int a = 1;const int b = &a;a = 3;cout << b <<endl;//此时b = 3
这里可能会有疑问,b是const的按道理不能修改,为什么值变了,原因是const b只是说不能通过b来修改a,但是a是非const的,所以可以任意修改,而b指向的是对象a,所以a变了,b自然变了。
这里就要说了,其实给变量弄个别名意义不大,主要还是用来作为函数传参的,因为直接进行fun(int a, int b)的参数传递,为值传递(传输的是原来参数的拷贝),虽然不改变原参数的值,但是消耗更多空间。
而如果用引用fun(int &a, int &b)则直接传递原来的参数的地址,可以改变元参数的值,减少消耗,如果不想对原参数a,b修改,可以设为const,fun(const int &a, int &b)即可。这样在函数fun中只能对a进行读取而不能修改。
0 0
- 引用(c++)
- C++----引用
- c++-引用
- C ++ 引用
- 【c++】引用
- 【c++】引用
- C++:引用
- C++:引用
- C/C++:C++引用
- 【c/c++】const引用
- 【C/C++】c++弱引用 强引用
- 枚举 c#(引用)
- 数组引用(C++)
- C++_引用
- c语言中的引用
- (Linux,c++)引用
- 引用(C++)
- objective-c 引用计数
- 深入解析Android的自定义布局
- FLAG_ACTIVITY_SINGLE_TOP
- 蓝海卓越NSWMP管理协议简介
- php的cURL库介绍
- TCP状态转换图
- 【c++】引用
- Easyui 使用笔记
- 将多个PDF合成一个的方法
- [Android Studio ERROR]Unable to start the daemon process
- 一张图看懂Https
- 屏蔽右键,点击鼠标触发事件,置顶
- Python实现返回数组第i小的元素
- Windows中7种定时器(VC定时器种类及占用资源对比)
- Android之动态更新通知栏