const

作用

  1. 修饰变量 ==> 变量不可变 代替C语言中的#define 常量 可以让编译器进行类型检查匹配

  2. 修饰指针

    1. 顶层const 指针的值不可变,但指针指向的可以变

    2. 底层const 指针指向的值不可以变,但指针可以变

      const 修饰函数形参的时候,编译器会去掉顶层的const,保留底层的const,所以可以通过底层的const来修饰函数进行函数重载,这个时候会有另外一个小问题,也推荐使用const_cast的来解决。

  3. 修饰引用

    1. 用于函数形参的时候 可以即避免值拷贝,又避免修改值的内容
    2. 修饰类的成员变量时候,该成员变量需要在参数列表初始化
  4. 修饰类的成员函数

    1. 类的成员函数不会改变对象的状态
    2. 为了调用这类函数,类的对象需要是const类型的
    3. 如果真的想修改某个与对象状态无关的变量的话,可以将这个变量标记为mutable