#include <iostream>
using namespace std;
int main()
{
int &rval = 8;//错误
system("pause");
return 0;
}
因为rval是一个非const引用,非const引用不能绑定到右值,而8是一个右值。将一个右值绑定到一个非const的引用,会导致错误,因为如果是非const,则意味着可以通过rval对这个右值进行修改,对右值进行修改,显然是不合逻辑的(所谓右值,简单直观地就理解,就是只能放在等号右边,既然只能放在等号右边,那就是只能读取不能写入),所以错了
而
#include <iostream>
using namespace std;
int main()
{
const int &rval = 8;//正确
system("pause");
return 0;
}
将右值绑定到一个const引用,是合理的,只能读取,不能修改
补充:
#include <iostream>
using namespace std;
int main()
{
int &&rval = 8;//正确
system("pause");
return 0;
}