引用的使用及其本质
来源:互联网 发布:荥阳网络推广wang1314 编辑:程序博客网 时间:2024/06/02 02:38
引用的本质:
在C++中,为了避免像指针一样去访问某个变量,引入了引用这一类型。实际上,虽然确实在使用上没有了指针的复杂性,但是引用的本质实际上就是通过const指针实现的。所以,可以从这两个方面来理解引用:
引用是一个左值的标签,引用就代表着所引用的那个变量。可以通过引用改变所代表的那个变量的值。如:
int x = 10; int &i = x; i = 5;
在这时,改变i,实际上就是改变所代表的那个变量的值。
引用的本质是const指针,等价与:
int x = 10; int * const i = &x; (*i) = 5;
在这里,I是不能被改变的,将一直指向x。
使用引用
引用在声明时必须初始化:
int x = 10; int &i = x; //int &i;//没有初始化是错误的 //i=x;
有指针的引用int *&p;
和数组的引用int (&array)[];
,但是没有引用数组和引用指针。原因是引用的地址是不可访问的。如果声明成 int &*p
,则此时的引用就变成了引用了指针,而该指针是可变的,可以指向不同的变量,那么此时的引用也就成了一个可变的,可以指向不同的变量,就没有了引用本来的绑定的特性,这是不允许的;如果声明成了 int &array[]
,这时就相当于该数组的基本类型是引用,也就是说,该数组里装的全是引用类型,这时数组里的引用就可以作为左值使用,不是一个实体,但是数组中的元素要求是实体,所以不能有引用数组。
引用作为左值使用
int& fun(int i){ i++; return i; }
在该行代码中,返回的是一个引用,所以可以这样使用该函数:`fun(i) = 10`,因为fun返回一个引用,改引用可以作为一个左值被赋值。同样,在指针中,如果返回一个指针,亦可以通过该指针赋值,如:`int * fun(int *i){ (*x)++; return x; }`,就可以这样使用:`(*fun) = 10`。
阅读全文
0 0
- 引用的使用及其本质
- iOS:KVO的简单使用及其本质
- 引用的本质图解
- 引用的本质是什么
- c++引用的本质
- 引用的本质
- 引用的本质
- C++引用的本质
- 引用的本质
- 引用的本质是什么?
- 引用的本质是什么?
- 引用的本质
- 引用的本质剖析
- 引用的本质
- 引用的本质
- 引用的本质
- 常量的本质及其用法
- 类的本质及其存储
- Springboot使用devTools进行热部署
- Math对象和Number对象
- 170918 逆向-jeb2动态调试(ciscn-crack.apk)
- SSH与SSM学习之hibernate19——多对一一对多关系维护
- Springboot国际化i18n
- 引用的使用及其本质
- S3C2416相关工程代码
- javascript BOM
- Android 主题切换/换肤方案 研究(五)
- 02 Activity窗口对象上的布局
- 如何在Ubuntu上安装Wine 2.6
- 读Spring源码的一些杂乱思绪(二)
- @Value读取配置文件,中文字符乱码
- const的普通用法及其在对象中的使用