首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rvalue和Lvalue引用

Rvalue和Lvalue引用
EN

Stack Overflow用户
提问于 2015-07-07 09:27:16
回答 1查看 178关注 0票数 4

我的函数printInt如下所示。

代码语言:javascript
复制
void printInt(const int& a)
{
    cout<<a<<endl;
}

当我使用以下参数调用like函数时

代码语言:javascript
复制
int a=5;
printInt(a);
printInt(5);

它工作得很完美。但是当我将函数定义更改为

代码语言:javascript
复制
void printInt(int& a)
{
    cout<<a<<endl;
}

这会给调用printInt(5)带来错误。现在,我的问题是为什么const int&既是lvalue又是rvalue引用,而int&只是lvalue引用。据我所知,int&&是一个rvalue引用。那么,单个&如何引用一个rvalue引用呢?

总结一下我的问题:

  1. Lvalue参考参数 void printInt(int& a) { cout<
  2. Rvalue参考参数 void printInt(int& a) { cout<
  3. 包括lvalue和rvalue。但是怎么做呢? void printInt(const & a) { cout<
EN

回答 1

Stack Overflow用户

发布于 2015-07-07 09:28:13

const int&是一个值引用。问题是,语言指定它可以绑定到rvalue。int&也是一个lvalue引用,但它不能这样做。这就是为什么第一个版本起作用,而第二个版本不起作用。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31264731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档