以下面这个例子为例,为什么会出现这种现象呢?
double d = 11.11;
int i1 = d;//这是可行的
int& i2 = d;//这是不可行的
const int& i3 = d;//这是可行的
因为当d赋值给i1的时候会产生一个临时变量,然后将d截断,取整数部分放到这个临时变量中,再将这个临时变量赋值给i1。这个临时变量是右值,具有常量性,即不可被修改,只能读取。那什么是右值呢?右值就是表达式产生的临时变量,常量。
以下面这个例子为例,为什么会出现这种现象呢?
double d = 11.11;
int i1 = d;//这是可行的
int& i2 = d;//这是不可行的
const int& i3 = d;//这是可行的
因为当d赋值给i1的时候会产生一个临时变量,然后将d截断,取整数部分放到这个临时变量中,再将这个临时变量赋值给i1。这个临时变量是右值,具有常量性,即不可被修改,只能读取。那什么是右值呢?右值就是表达式产生的临时变量,常量。