我有一个名为printInt的函数,如下所示。
当我使用以下参数调用像函数时,例如:
这会导致调用
总结一下我的问题:
void printInt(const int& a)
{
cout<<a<<endl;
}
当我使用以下参数调用像函数时,例如:
int a=5;
printInt(a);
printInt(5);
它工作得非常完美。 但是当我更改函数定义为
void printInt(int& a)
{
cout<<a<<endl;
}
这会导致调用
printInt(5)
时出错。现在我的问题是为什么const int&
既是左值引用又是右值引用,而int&
只是左值引用。据我所知,int&&
是右值引用。那么一个单独的&如何引用一个右值引用?总结一下我的问题:
Lvalue reference parameter
void printInt(int& a) { cout<<a<<endl; }
Rvalue reference parameter
void printInt(int&& a) { cout<<a<<endl; }
Both lvalue and rvalue. but how?
void printInt(const int& a) { cout<<a<<endl; }