const相关易混淆点备忘录

1.const指针

样式:

1      int errNumb = 0; 
2      int *const curErr = &errNumb; // curErr is a constant pointer 

解释:

根据、《Think C++》”中介绍的读法(参考“http://zhidao.baidu.com/question/85791037.html?oldq=1&from=evaluateFrom”),上述指针可以解释为:curErr是一个const指针,它指向的是int型变量

重点:

首先:“与其他 const 量一样,const 指针的值不能修改,这就意味着不能使 curErr 指向其他对象。”

其次:“与任何 const 量一样,const 指针也必须在定义时初始化。”

易混淆点:

“指针本身是 const 的事实并没有说明是否能使用该指针修改它所指向对象的值。指针所指对象的值能否修改完全取决于该对象的类型。例如,curErr 指向一个普通的非常量 int 型对象 errNumb, 则可使用 curErr 修改该对象的值:”

代码示例:

1           if (*curErr) { 
2               errorHandler(); 
3               *curErr = 0; // ok: reset value of the object to  which curErr is bound 
4           } 

2013-04-20

2.对于const问题,“http://blog.csdn.net/zhoukangli/article/details/8035456”这篇博客写的不错,特别是其中有一句“本质:const在谁后面谁就不可修改,const在最前面则将其后移一位即可,二者等效”是关键,在目前知道的const的使用中,没发现与这句话有冲突的案例。

 

 

 

 

 

 

posted on 2013-03-30 22:25  毋忆典藏  阅读(137)  评论(0编辑  收藏  举报