C++ 中 const 有几个需要注意的地方:

##const 成员函数

若要能够让const object使用成员函数,就需要在函数的声明后面加上const关键字。为什么呢?因为成员函数中的this是一个指向非const类型的const指针,也就是指针所保存的地址虽然不能改变,但是指针所指向的对象是可以被改变的。这样一来,如果使用const类型的对象调用成员函数,就相当于要把一个const对象的地址交给一个非const型指针,这当然时不允许的了。代码示例如下:
1
void addMsg(Message &) const;



##const 与指针
const用来修饰指针有两种可能,一个是用来限制指针的地址,一个是用来限制指针所指向的对象。如下就是用来限制所指对象:
1
const int *ptr_int = i;//address can be changed.


而如下则是用来限制地址:
1
int *const ptr_int = i;//object is changable.



##const 与reference
reference 是本来就不能改变所指对象的,所以就不存int &const ra了,const用来限制reference,一定是对所指对象的限制。

其实,要想用好const,不仅仅熟悉const的语法,更重要的是对自己的程序有深刻的认识,知道什么是该变的,什么是不该变的。