const 的使用
const关键字是 C++中的神奇关键字,能够花样百出的完成各种保护工作。指针跟const关键字相比,其使用复杂程度简直是弱爆了。以下列举常见的const关键字的使用方法。
- 定义常量:
const a = 0。 - 对指针使用
const,当const位于*左侧,const用于修饰指针的指向;当const位于*右侧,const用于修饰指针本身。(char *) const pC和const (char *) pC,表示指针本身指向不可变;const char *pC和const (char) *pC,表示指针只能指向常量;const char * const pC,表示指针只能指向常量且不可变更指向。
- 当函数使用
const:- 修饰参数的情况:
const int var,参数在函数内不可变;const char * var,指针所指内容不可变;char * const var,指针参数本身不可变;const class& var,引用参数在函数内不可变。
- 修饰返回值的情况:
const int f(),无意义;const int * f(),返回不可变指针;int * const f(),返回不可变指针。
- 修饰参数的情况:
- 当类中使用
const:- 当成员变量使用
const修饰时,只能在初始化列表中对成员变量进行赋值,并不能够再次修改。 - 对成员函数使用
const修饰时,const关键字一般写在成员函数声明的末尾:- 使用
const修饰的成员函数不允许修改任何一个数据成员。 - 使用
const修饰的成员函数不能调用类中非const成员函数。
- 使用
- 当成员变量使用
- 对于使用
const修饰的类实例、指针和引用,只能调用类的const函数,并且其中的任何成员都不能修改。
在类中使用const修饰的方法是不能修改类成员变量的,但是被mutable关键字修饰的成员变量除外。关键字mutable可以突破const关键字限制,将成员变量声明为始终可变的。