int bb = 0; int *const aa = &bb; *aa=5; // aa = 9;
aa是一个常量指针,就意味着指针本身是一个常量,这就意味着不能改变指针本身的值,但是可以改变指针所指向的对象的值,也即地址是不变的呀!aa = 9是错误的!
const int bb = 0; int *const aa = &bb; *aa=5;
同样上面的代码段也是错误的,指针本身常量,不是指向的对象是常量的,所以将bb的值付给他是不对的。
const int bb = 0; const int *const aa = &bb;
这样就是对的啦,指向常量的常量指针,一方面指针的值是不变的,另一方面,指针所指向的对象的值也是不变的。
常见的this指针其实是常量指针,因此他不能指向常量的对象,因此我们通过一个常量成员函数来是this成为指向常量的常量制指针,就可以将this绑定到常量对象上。