const的作用包括:
- 修饰常量
cont int i = 2;
i = 3; //错误
相比于#define常量,const修饰的常量能够进行类型安全检查,而#define只是纯文本替换。
- const与指针
const int *ptr; //指针所指的内容是常量
int* const ptr; //指针本身是常量
const int* const ptr; //指针本身、指针所指的内容都是常量
- 修饰函数参数
为了保证函数参数不被函数体修改,且避免复制整个参数(有时参数是个很大的类)、提高效率,一般是const+引用:
void foo(const myClass& c){}
- 修饰函数返回值
和const修饰指针类似(把函数看作是指针变量)。多用于操作符重载。
const int* foo();
const int* ptr = foo();
- 修饰类成员变量
const的类成员变量初始化后不可修改。 - 修饰类成员函数
class Cat
{
public:
int age = 2;
void getAge() const
{
cout << age << endl; // OK
age++; //错误:const成员函数不能修改成员变量
}
};