我有一个函数printInt,如下所示.
void printInt(const int& a)
{
cout<<a<<endl;
}
Run Code Online (Sandbox Code Playgroud)
当我使用以下参数调用函数时
int a=5;
printInt(a);
printInt(5);
Run Code Online (Sandbox Code Playgroud)
它完美地运作.但是当我将函数定义更改为
void printInt(int& a)
{
cout<<a<<endl;
}
Run Code Online (Sandbox Code Playgroud)
这给通话带来了错误printInt(5).现在我的问题是为什么const int&是左值和左值引用,而int&只是左值引用.据我所知,int&&是一个右值参考.那么单个&可以如何引用右值参考?
总结一下我的问题:
左值参考参数
void printInt(int& a)
{
cout<<a<<endl;
}
Run Code Online (Sandbox Code Playgroud)Rvalue参考参数
void printInt(int&& a)
{
cout<<a<<endl;
}
Run Code Online (Sandbox Code Playgroud)左值和左值.但怎么样?
void printInt(const int& a)
{
cout<<a<<endl;
}
Run Code Online (Sandbox Code Playgroud)