服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - c++ const引用与非const引用介绍

c++ const引用与非const引用介绍

2020-11-17 12:08C++教程网 C/C++

const引用是指向const对象的引用,可以读取ref,但不能修改所以也就有将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引用则可以绑定到不同但相关的类型的对象或绑定到右值。

延伸 · 阅读

精彩推荐