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语言编程中的联合体union入门学习教程详解
联合体(union)在C语言中是一个特殊的数据类型,能够存储不同类型的数据在同一个内存位置。可以定义一个联合体使用许多成员,但只有一个部件可以包含在任何时候给定的值。联合体会提供使用相同的存储器位置供多用途的有效方式。定义联合体要定义联合体,必须使用unio...
-
C语言if else语句汇总
对于很多情况,顺序结构的代码是远远不够的,大家都接触过C语言吧,下面是小编为大家整理的C语言ifelse语句,希望对大家有所帮助。C语言ifelse语句在C语言中,使用if和else关键字对条件进行判断。请先看下面的代码:#includeintmain(){intage;printf("请输入你的年龄:");sc...
-
C语言指针的长度和类型讲解
对于初学者深入理解C语言程序设计有很好的参考价值,下面是小编为大家整理的C语言指针的长度和类型讲解,欢迎参考~一般来说,如果考虑应用程序的兼容性和可移植性,指针的长度就是一个问题,在大部分现代平台上,数据指针的长度通常是一样的,与指针类型无关,尽管C标准没有规...
-
Mac系统怎样使用终端编写c语言程序
C语言是目前较为普遍的程序语言,它功能丰富、表达能力强、使用灵活方便、目标程序效率高,适合编制一般应用软件。下面是应届毕业生小编收集整理的Mac系统怎样使用终端编写c语言程序,希望对大家有帮助~~Mac系统使用终端编写c语言程序的'方法工具/原料Mac系统,终...
相关文章
- Unit3 How do you get to school?(Section B 2a-2c)
- C语言中Static和Const关键字的作用
- C++中const-cast与reinterpret-cast运算符的用法
- Connect to Idle Instance问题的解决方法
- 七年级Unit 4 Don’t eat in class. Section A说课稿
- CentOS上搭建Nginx+Mono运行asp.net环境配置教程
- Sentence Completion训练SAT备考习题
- SAT Sentence Completion英语选择题
- SAT官方指南Senctence Completion的练习题
- 【荐】Unit3 How do you get to school?(Section B 2a-2c)