常量指针,真是绕口

Posted on 2016-08-10 09:05  Jay_L_Z  阅读(162)  评论(0编辑  收藏  举报
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绑定到常量对象上。