加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > C语言 > 正文

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

发布时间:2020-12-15 00:52:43 所属栏目:C语言 来源:网络整理
导读:const引用是指向const对象的引用。 复制代码 代码如下: const int i = 10; const int 可以读取ref,但不能修改。这样做是有意义的,因为i本身就不可修改,当然也不能通过ref来修改了。所以也就有将const变量赋值给非const引用是非法的。 复制代码 代码如下: i
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语言编程技巧 关于const和#define的区别心得
  • c++ 尽量不要使用#define 而是用const、enum、inline替换。
  • C++中的类型转换static_cast、dynamic_cast、const_cast和reinterpret_cast总结
  • C/C++中static,inline三种关键字详细总结
  • C++中const的实现机制深入分析
  • C/C++中宏定义(#define)
  • C++ 中pragma once 与 #ifndef _XXX_H_ #define _XXX_H_的区别
  • C/C++中的typedef和#define详解
  • C++中const与#define的利弊分析

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读