const

Posted on 2016-08-09 09:56  Jay_L_Z  阅读(115)  评论(0编辑  收藏  举报

在c++中,尽量使用常量引用作为形参的原因:

1、因为很多情况下不能把const 对象,字面值类型和需要类型转换的对象传给普通的引用。primer里也提到过使用引用代替指针来进行操作。

void reset( int &i)
{
i=0;                       //这个是正确的
}

void reset(const int &i)
{
i=0;                         //这个是错误的,因为不能改变常引用的值
}

 

 

举个指针的例子

void reset( int *const i)
{
*i=0;
i = 0;                       //错误的,因为int *const是一个顶层指针,意味着指针本身是一个常量,所以i = 0是错误的
}

void reset( const int * i)
{
*i=0;                     //这也错误的,因为不能改变一个常指针的值,*i = 0是错误的
i = 0;
}

void reset(  int * i)
{
*i=0;                     //这也对的
i = 0;
}

 

注释很重要,标注错误的注释所在行就是出错所在行。

 

 

int jj =42;
const int &r = jj;
r = 0;//又错啦,不能给常引用赋值的,既然引用定义成了常引用,就意味着不能随便改变值的大小。

 

不能返回局部对象的引用和指针,因为函数一旦结束,函数终止就意味着局部变量的引用将指向不再有效的区域。