1、当const出现在 * 左边,例如const int *p或int const *p(无区别),表示被指向的值是常量。
2、当const出现在 * 右边,例如int * const p,表示指针本身是常量。
3、当const出现在 * 两边,表示被指向的值和指针本身都是常量。
1、const int *p: 此时const 修饰的是指向的值,因此相当于是一个指向常量的指针,*p是常量,因此:
*p = 100 //error 不能修改常量的值
p = & r //正确 可以给p赋予其他的地址
2、int * const p:此时const修饰的是指针本身,因此相当于是一个常量指针,p是常量指针,因此:
常量指针必须初始化
*p = 100 //正确 可以修改它所指向的值
p = & r //error 常量指针的指向不能修改
在c++的类成员函数中,每个成员方法中都有一个this指针,在Test类中,this指针的类型为Testconst this,它相当于是一个常量指针,在类中生成的常量对象(const Test)不能直接访问普通的成员函数(Test*),因此需要将普通成员函数声明成常量成员函数(const Test* const this)。