c++ const引用与非const引用
const引用只读不可修改,与绑定对象是否为const无关。非const引用可读可改,下面内容由小编为大家介绍c++ const引用与非const引用,供大家参考!
const引用是指向const对象的引用。
复制代码 代码如下:
const int i = 10;
const int &ref = i;
可以读取ref,但不能修改。这样做是有意义的,因为i本身就不可修改,当然也不能通过ref来修改了。所以也就有将const变量赋值给非const引用是非法的。
复制代码 代码如下:
int &ref1 = i; // error: nonconst reference to a const object
非const引用是指向非const类型变量的'引用。
const引用可以初始化为不同类型的对象或者右值(如字面值常量),但非const引用不可以。
复制代码 代码如下:
// legal for const references only
int i = 10;
const int & ref = 42;
const int & ref1 = r + i;
double d = 3.14;
const int &ref2 = d;
以绑定到不同类型的ref2为例解释原因,编译器会把ref2相关的代码转换如下:
复制代码 代码如下:
int temp = d;
const int &ref2 = temp; // bind ref2 to temporary
ref2实际上是绑定到一个临时变量上,如果ref2不为const,那么按道理就可以通过修改ref2而修改d的值,但实际上d并不会改变。所以为了避免这个问题,ref2只能是const。
非const引用只能绑定到与该引用同类型的对象,const引用则可以绑定到不同但相关的类型的对象或绑定到右值。
-
C语言与JAVA的区别
很多人不明白C语言与C++和JAVE之间的区别,为此,为大家收集整理了下面的内容,欢迎阅读!C语言C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语...
-
C语言如何提高程序效率
好的代码没有一个统一的衡量标准,在程序员们的世界里大家也是各自按照自己的标准衡量着自己和别人的代码。不过有一个标准几乎是被所有人认同的。服役时间越长、出错率越高的代码就是好代码。所有的编程方法、代码技巧甚至于设计模式都是为了达到这个目的而产生...
-
C语言自增(++)和自减(--)
C语言源自KenThompson发明的B语言,那么大家知道C语言自增(++)和自减(--)是什么呢?下面一起来看看!一个整数自身加一可以这样写:a+=1;它等价于a=a+1;。但是在C语言中还有一种更简单的写法,就是a++;或者++a;。这种写法叫做自加或自增;意思很明确,就是自身加一。相应...
-
C语言输出菱形的方法
题目:输出行列都相等的菱形,如5行5列:行列123451*2***3*****4***5*分析:当行数等于总行数的一半时,*是递增的,递增为2。当行数大于总行数的一半时,*是递减的,递增为2。设有一个行列为n的菱形,我们用变量i作为行数,以0开始,ik作为n菱第i行要输出的*个数。则i<=n的中值(用m...
相关文章
- SAT官方指南Senctence Completion的练习题
- CentOS上搭建Nginx+Mono运行asp.net环境配置教程
- 【荐】Unit3 How do you get to school?(Section B 2a-2c)
- Sentence Completion训练SAT备考习题
- Unit3 How do you get to school?(Section B 2a-2c)
- 七年级Unit 4 Don’t eat in class. Section A说课稿
- C++中const-cast与reinterpret-cast运算符的用法
- SAT Sentence Completion英语选择题
- C语言中Static和Const关键字的作用
- Connect to Idle Instance问题的解决方法