ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 常量引用

常量引用

原创 Linux操作系统 作者:HaFoLuoKe 时间:2013-03-28 17:50:24 0 删除 编辑
常量引用作为参数时既可以接受左值,也可以接受右值。

例如 

double & i = 1;                 error
double const & j = 1;

这里插入一点对左值右值的理解,在赋值语句中只能出现在右边的就是右值,既能出现在左边又能出现在右边的就是左值。
不能取地址(临时变量)的就是右值,可以取地址(持久变量)的就是左值。

所以可以这么理解,右值是定以后不能改变的,所以必须是常量引用.

常量引用做参数时的情况:

int test1(int & i); 只能接受左值
int test2(int const & i); 可以接受左值和右值

overload的情况:
int test(int & );
int test(int const &);

test(1); 调用 int test(int const &);
test(i); 调用 int test(int & );
但是实际上 常量引用时也是可以传入左值的,所以这样做有些歧义。

在C++中的右值引用和mov语义( type&& )这个概念,当一个构造函数接受右值引用时它不会分配新的空间,而

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26899445/viewspace-757349/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-03-12

  • 博文量
    31
  • 访问量
    51171