c++之指针,引用,const
来源:互联网 发布:炫舞炸家族邀请软件 编辑:程序博客网 时间:2024/06/07 00:46
一,引用的概念
引用不是定义一个新的变量,而是给一个已经定义的变量重新起⼀个别名。
格式:
类型&新的变量名=已经定义过的变量名
引用的特点:
1.一个变量可取多个别名;
2.引用必须初始化;
3.引用只能在初始化的时候引用⼀次,不能改变为再引用其他的变量。
来看先const 和 引用:
我们可以把引用绑定到const对象上,其绑定的方式和 绑定到其他对象是一样的,称为常量引用,与普通的引用不同的是,对常量的引用不能被用于修改它所绑定的对象
const int ci = 100; const int &r1 = ci; //正确的,引用及对象都是常量 r1 = 11 //这是错误的,因为r1是对常量的引用 int &r2 = ci //错误的。不能让一个非常量引用指向一个常量对象;
引用的类型必须要跟所指向的类型保持一致,但是有两个例外第一种例外是在初始化常量引用时允许使用任意表达式作为初始值,只要该表达式的结果能转化为引用的类型就行了,尤其,允许为一个常量引用绑定非常量的对象,字面值甚至一个一般表达式。
int i= 42; const int &r1 = i; const int &r2 = 42; const int &r3 = r1 * 2;
这些都是合法的。
那么问题来了,如果在类型不一致的时候会发生时候事情呢?
首先:
double dval = 3.14; const int & r1 = dval;
此处r1 是int型引用,但是dval为double 类型,那么为了确保r1 绑定一个对象,编译器会把上述的代码变成:
const int temp = dval; const int &r1 = temp;
在 这种情况下r1 绑定了一个临时量.
那么如果r1 不是一个常量,会发生什么呢?
如果r1 不是一个常量,就允许对 r1 赋值,这样改变r1 所引用对象的值,但是此时绑定的是一个临时量,而非dval,既然我们将r1 引用dval,那么久肯定相同过r1 改变dval 的值,否则为什么要给r1 赋值呢?所以C++规定这行为是非法的。
阅读全文
0 0
- 11、C++const指针 引用
- C++:指针、引用和CONST
- c++之指针,引用,const
- C++(常)引用,const,指针引用
- 引用,const引用,指针
- 二、从C到C++(二) 引用、引用常见用途、指针和引用区别、const引用
- const引用和const指针
- const指针和const引用
- const指针与引用
- 指针 引用 const
- 引用与 const指针
- 总结:指针、引用、const
- const 和 引用 指针
- 指针--引用--const
- C++ 引用、const指针
- const指针的引用
- const 指针和引用
- 指针-引用-const
- Python 3.6 由于lxml依赖关系, 导入docx或python-docx失败的问题
- OpenCV中feature2D学习——SIFT和SURF算子实现特征点提取与匹配
- 如何踏上人工智能之路(机器学习篇)
- python web service
- JPA是什么?怎样开发JPA应用?
- c++之指针,引用,const
- Dialog(对话框)
- 观察者模式
- VS 快捷键
- [软件测试流程]软件测试的基本流程
- 《Linux内核设计与实现》读书笔记(三)- Linux的进程
- C++实训单元七-类与继承
- spring-data-jpa 看这个就够了
- spring定时器表达式cron