C语言

c++ const引用与非const引用

时间:2024-09-15 11:04:11 C语言 我要投稿
  • 相关推荐

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++ const引用与非const引用】相关文章:

const的理解和用法08-28

C语言的const使用方法07-02

C语言关键字const用法09-06

PHP引用(符号)的用法10-21

php中引用的用法分析06-22

浅谈Java中的弱引用10-27

C语言数组的定义及引用08-05

考试反思能引用的名言警句07-21

浅谈理解Java中的弱引用07-22

吸引用户的网页设计技巧07-03