引用都是不可以修改的,在创建的时候就要赋值,一经赋值就不能修改。
所以不存在像指针一样的底层和顶层之分,从某种意义上也可以说都是底层的
int i = 3;
const int &r_int = i;
此时const修饰int,表明是一个对常量int的引用,还有,应用不能绑定一个右值,因为右值在栈中,是临时的。一下代码是不正确的
const int &r_int = 3;
还有如果变量、表达式被括号括起来,表示取该变量的引用,如
//返回int
auto get_add_v(int other, int anther){
return other + anther;
}
//返回int的引用
auto get_add_r(int other, int anthor){
return (other + anther);
}
还有除auto之外,decltype可以表示推断类型
下面这个例子是我今天遇到的一个问题
int i = 3;
decltype(i) i2 = 5;
const decltype((i)) i_r = i2 //则,i_r为int引用
i_r = 4;
cout << i_r << endl; //输出为4
可以肯定,i_r引用的值被改变了,decltype((i))是一个对int的引用,const没有修饰int,我这样解释不知道正确不