const 的使用

const关键字是 C++中的神奇关键字,能够花样百出的完成各种保护工作。指针跟const关键字相比,其使用复杂程度简直是弱爆了。以下列举常见的const关键字的使用方法。

  1. 定义常量:const a = 0
  2. 对指针使用const,当const位于*左侧,const用于修饰指针的指向;当const位于*右侧,const用于修饰指针本身。
    1. (char *) const pCconst (char *) pC,表示指针本身指向不可变;
    2. const char *pCconst (char) *pC,表示指针只能指向常量;
    3. const char * const pC,表示指针只能指向常量且不可变更指向。
  3. 当函数使用const
    1. 修饰参数的情况:
      1. const int var,参数在函数内不可变;
      2. const char * var,指针所指内容不可变;
      3. char * const var,指针参数本身不可变;
      4. const class& var,引用参数在函数内不可变。
    2. 修饰返回值的情况:
      1. const int f(),无意义;
      2. const int * f(),返回不可变指针;
      3. int * const f(),返回不可变指针。
  4. 当类中使用const
    1. 当成员变量使用const修饰时,只能在初始化列表中对成员变量进行赋值,并不能够再次修改。
    2. 对成员函数使用const修饰时,const关键字一般写在成员函数声明的末尾:
      1. 使用const修饰的成员函数不允许修改任何一个数据成员。
      2. 使用const修饰的成员函数不能调用类中非const成员函数。
  5. 对于使用const修饰的类实例、指针和引用,只能调用类的const函数,并且其中的任何成员都不能修改。

在类中使用const修饰的方法是不能修改类成员变量的,但是被mutable关键字修饰的成员变量除外。关键字mutable可以突破const关键字限制,将成员变量声明为始终可变的。