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
关键字限制,将成员变量声明为始终可变的。