在C++中,const是一个关键字,用于声明常量或者修饰变量、指针、引用等,表示其数值是不可修改的。const关键字的主要作用包括一下几个方面:
一、修饰基本数据类型
基本数据类型,修饰符const可以用在类型说明符前,也可以用在类型说明符后,其结果是一样的。在使用这些常量的时候,只要不改变这些常量的值即可。
//1、const 在类型说明符前
const int a;//2、const 在类型说明符后
int const a;
二、修饰指针变量和引用变量
1、如果const位于小星星的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量,即为指针常量;
//指针常量,指针指向常量,指针所指之物不能修改,但指针的指向可以修改
const int *a;
2、如果const位于小星星的右侧,则const就是修饰指针本身,即指针本身是常量,指针的指向不能修改,即常量指针;
//常量指针,指针本身为常量,指针所指之物可以修改,但指针的指向不能发生修改
int *const a;
三、应用到函数中
1、作为参数的const修饰符:调用函数的时候,用相应的变量初始化const常量,则在函数体中,按照const所修饰的部分进行常量化,保护了元对象的属性。(参数const通常用于修饰参数为指针或引用的情况)
void print(const int *a);
四、在类中的用法
1、const成员变量
const成员变量,只在某个对象的生命周期内是常量,而对于整个类而言是可以改变的。因为类可以创建多个对象,不同的对象其const数据成员值可以不同。所以不能在类声明中初始化const数据成员,因为类的对象在没有创建的时候,编译器不知道const数据成员的值是什么。const数据成员的初始化只能在类的构造函数的初始化列表中进行。
2、const成员函数
const成员函数的主要目的是防止成员函数修改对象的内容。要注意,const关键字和static关键字对于成员函数是不能同时使用的,因为static关键字修饰的静态成员函数不含有this指针,即不能实例化,const成员函数又必须具体到某一个函数。(const成员函数中如果实在想修改某个变量,可以使用mutable进行修饰)
3、const修饰类对象
const修饰类对象,定义常量对象:常量对象只能调用常量函数,别的成员函数都不能调用。