• const关键字与引用


    一. 入门:概念引入

    1. 变量与引用的关系

    定义一个普通 int 类型变量 val ,初始值假设为 10。

    1 int val = 10;

    再定义一个该变量的引用 val_ref 

    1 int &val_ref = val;

    引用就是该变量的一个别名,对引用做出的改变,均会体现在原来的变量上。引用可以提高效率,比如避免不必要的复制。但是它也有坏处:可以改变原来的变量内容(有时候你不希望这么做)。

    2. const 与变量的关系

    上面的变量 val 是可以被改变的,如果希望它不被改变,则需要这么做:

    1 const int val = 10;

    加上 const 以后,变量 val 成了一个常量,它不允许被改变。在程序运行时,一切改变常量 val 内容的行为,都会被编译器指出。

    二. 进阶: const 与引用的关系

    我们现在把变量跟它的引用看成一个整体,一一对应。一个变量没有 const ,那么它是一个普通变量,可以被改变;加上 const 以后,它成为了一个常量,不允许被改变。引用也是一样。

    这样就产生了如下 4 种情况:

    1. 

    1 int a = 10;
    2 int &a_ref = a;

    变量 a 可以被改变,它的引用 a_ref 也可以用于修改变量 a 。这时,对引用的改变会体现在原变量上。

    2.

    1 const int b = 20;
    2 const int &b_ref = b;

    常量 b 不能被改变,同时它的引用也不能被用于修改原变量。

    3.

    1 int c = 30;
    2 const int &c_ref = c;

    变量 c 可以被改变,但它的引用不能被用于修改原变量。这句话的意思是,允许你修改变量 c 的值,但并不是通过它的引用来修改,你需要选择另外一种途径。

    4.

    1 const int d = 40;
    2 int &d_ref = d;

    这种写法是错误的。常量 d 是一个不能被修改的值,但是它的引用却是一个普通 int 类型,这两种类型并不匹配,所以编译器会报错。

  • 相关阅读:
    css做导航
    css和div
    表格技巧
    HTML表单
    ASP.NET MVC 中的强类型控件
    Aspose.Cells导入与导出excel
    webpack 入门
    asp.net my sqlHelper
    visual studio下用mysql数据库建EF遇到的问题及解决方法
    asp.net mvc 无刷新高效分页
  • 原文地址:https://www.cnblogs.com/Hello-Nolan/p/12845326.html
Copyright © 2020-2023  润新知