作用
- 限定变量为不可修改
- 限定成员函数不可以修改任何数据成员(“函数体内不能对成员数据做任何改动”,如果你声明这个类的一个const实例,那么它就只能调用有const修饰的函数)
- 不可以同时用const和static修饰成员函数
const 变量 | const int a; | 不能修改值,必须初始化 |
const 类对象 | const MyClass a; | 不能修改成员变量的值,不能调用非const函数 |
指向 const 变量的指针 | const int* a; | 指向内容不可变,指向可变 |
const 指针 | int * const a; | 指向内容可变,指向不可变 |
指向 const 变量的 const 指针 | const int * const a; | 指向内容和指向都不可变 const 引用(可以引用右值,如:const int& a=1;) |
const 变量作为函数参数 | void myfun(const int a); | 函数内部不能改变此参数 指向const变量的指针做参数,允许上层用一般指针调用。(反之不可) |
const 返回值 | const string& myfun(void); | 用于返回const引用 上层不能使用返回值的引用来修改对象 |
const 成员变量 | const int a; static const int a; | 必须在初始化列表初始化,之后不能改变 static const 成员变量需要单独定义和初始化 |
const 成员函数 | void myfun(void) const; | this指针为指向const对象的const指针 不能修改非mytable成员变量 可以被const和非const对象调用,而const对象只能调用const函数 |