常量修饰符,用来限定特定变量,通知编译器该变量不可以修改。使用const修饰符可以避免在函数中对某些不应修改的变量造成可能的改动。
对于基本的数据类型,修饰符可以在类型说明前面,可以在后面。
const int a = 100;
int const b = 200;
const int arr[2] = {1,2};
const修饰指针,分为两种情况,常量指针与常量的指针
// const 数据
const char * p = "hello";
// const 指针
char * const q = "world";
// const 指针 + const 数据
const char * const pq = "!!!!";
const可以修饰函数的参数、返回值以及类型的成员函数。
const只能修饰输入作用的参数,修饰输出作用的参数没有意义。
修饰函数形参则在函数体内不能修改形参的值。
如果返回值为指针,加上const修饰后,内容是不可以修改的。
同时,接收变量也必须是const修饰的。
const修饰成员函数是为了保护成员变量,要求const函数不能修改成员变量,否则编译不通过。
函数体内不能修改成员变量的值,增加程序的健壮性。
只有成员函数才可以在后面加const,普通函数后加const无意义。
const修饰成员函数的规则
#include
using namespace std;
class myclass{
private:
int a;
mutable int b;
public:
myclass(){
a = 1;
b = 2;
}
void print() const {
int c = 1;
// 非成员变量可以修改
c += 1;
// mutable 修饰的成员变量可以修改
b += 2;
// 成员变量不可以修改
cout << "a:" << a << endl;
cout << "b:" << b << endl;
cout << "c:" << c << endl;
}
};
int main(){
myclass mc;
mc.print();
return 0;
}
const修饰的类对象的任何成员都不能被修改,const类对象只能调用const成员函数。