基本用法
const用来声明一个常量,常量被初始化后它的值就固定了,不再允许修改:
const int Month = 12;
const与指针
const用于指针有三种形式:
- 让指针指向一个常量对象,防止指针修改所指向的值,例如:
int age = 39;
const int *pt = &age;//声明指向常量的指针
上面的代码声明了一个指向 const int 类型的变量,因此不能用pt来修改该值,即*pt的值为const,不能被修改。
不能使用pt来修改age的值,但是可以直接修改age的值,因为age是常规变量,没有const修饰:
*pt = 20; //错误
age = 20; //正确
对应const 修饰的变量来说只能赋值给“指向常量的指针”,不能赋值给常规指针:
const float g_earth = 9.8;
const float *pe = &g_earth; //正确
float *pt = &g_earth;//错误
- 声明指针本身为常量,防止改变指针所指向的位置 、
int sloth = 3;
int * const finger = &sloth;
上面的声明中finger只能指向sloth,但是可以使用finger修改sloth的值,finger是const而*finger不是const
- 声明指向const对象的const指针
double trouble = 2.0E30;
const double * const stick = &trouble;
这段代码中 stick只能指向trouble,stick不能修改trouble的值,也就是说stick与*stick都为const
const与引用
引用是一个变量的别名,通过使用引用作为函数的形参可以使函数使用原始数据,引用更接近于const指针,一旦与某个变量关联起来将一直效忠于这个变量,也就是说:
int & rodents = rats;
实际上是下述代码的伪装表示:
int const * pr = &rats;
rodents 与 *pr起到相同的作用。
如果只希望函数使用传递给它的信息而不能修改信息,则需要使用常量引用:
double refcube(const double &ra);
这样当编译器发现修改了ra的值时会生成错误信息。
const 写在函数体{}前
const 写在函数体{}前的作用与注意点如下:
作用: 表示这个函数只有读的操作,没有写操作,不允许函数改变成员变量的值
注意: const 放在函数体前需在类里面使用