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

 更新时间:2013年01月31日 17:01:28   作者:  
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引用则可以绑定到不同但相关的类型的对象或绑定到右值。

相关文章

  • C++实现LeetCode(133.克隆无向图)

    C++实现LeetCode(133.克隆无向图)

    这篇文章主要介绍了C++实现LeetCode(133.克隆无向图),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • C++虚函数表和虚析构介绍

    C++虚函数表和虚析构介绍

    这篇文章主要介绍了C++虚函数表和虚析构,虚函数表是C++实现多态的基础,多态是面向对象的三大特性之一,下面文章我们一起来看看详细内容,需要的朋友可以参考一下
    2021-11-11
  • 详解C++设计模式编程中责任链模式的应用

    详解C++设计模式编程中责任链模式的应用

    这篇文章主要介绍了C++设计模式编程中责任链模式的应用,责任链模式使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,需要的朋友可以参考下
    2016-03-03
  • C++基于UDP协议的群聊服务器开发实现

    C++基于UDP协议的群聊服务器开发实现

    本文主要介绍了C/C++基于UDP协议的群聊服务器开发,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-04-04
  • C语言实现学生奖学金评定系统

    C语言实现学生奖学金评定系统

    这篇文章主要介绍了C语言实现学生奖学金评定系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • QT实现贪吃蛇游戏代码详解

    QT实现贪吃蛇游戏代码详解

    本文主要为大家详细介绍了在QT中实现贪吃蛇游戏的详细教程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • C++实现快速排序(Quicksort)算法

    C++实现快速排序(Quicksort)算法

    这篇文章主要为大家详细介绍了C++实现快速排序(Quicksort)算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • C++图文并茂轻松进阶面向对象

    C++图文并茂轻松进阶面向对象

    面向对象中对象是指具体的某一个事物,这些事物的抽象就是类,类中包含数据(成员变量)和动作(成员方法),接下来让我们一起详细了解
    2022-04-04
  • C语言详细分析常见字符串函数与模拟实现

    C语言详细分析常见字符串函数与模拟实现

    字符串函数(String processing function)也叫字符串处理函数,指的是编程语言中用来进行字符串处理的函数,如C,pascal,Visual以及LotusScript中进行字符串拷贝,计算长度,字符查找等的函数
    2022-03-03
  • C++中cout的格式使用详细介绍

    C++中cout的格式使用详细介绍

    cout 是C++中 ostream 类型的对象,该类被封装在 < iostream > 库中,该库定义的名字都在命名空间 std 中,所以 cout 全称是 std::cout 。本文重点给大家介绍C++中cout的格式使用,需要的朋友参考下吧
    2021-06-06

最新评论