我的函数printInt如下所示。
void printInt(const int& a)
{
cout<<a<<endl;
}当我使用以下参数调用like函数时
int a=5;
printInt(a);
printInt(5);它工作得很完美。但是当我将函数定义更改为
void printInt(int& a)
{
cout<<a<<endl;
}这会给调用printInt(5)带来错误。现在,我的问题是为什么const int&既是lvalue又是rvalue引用,而int&只是lvalue引用。据我所知,int&&是一个rvalue引用。那么,单个&如何引用一个rvalue引用呢?
总结一下我的问题:
发布于 2015-07-07 09:28:13
const int&是一个值引用。问题是,语言指定它可以绑定到rvalue。int&也是一个lvalue引用,但它不能这样做。这就是为什么第一个版本起作用,而第二个版本不起作用。
https://stackoverflow.com/questions/31264731
复制相似问题