C ++中的所有其他声明语法都很有意义,例如:
int i;
i
是int
int *i;
取消引用i
后,结果为int
int i[];
下标i
时,结果为int
int *i[];
订阅i
时,结果为derefrenced,最终结果为int
但是当你看一下参考变量的语法时,这种一致的推理就会崩溃。
int &i = x;
“当i
的地址被采用时,结果是int
”毫无意义。
我是否遗漏了某些东西,或者这是否真的是其他sytax背后明显推理的例外?如果是例外,为什么选择这种语法?
编辑:
This question解决了为什么&
符号可能被选择用于此目的的原因,而不是是否存在一种普遍一致的方式来阅读与上述方式不同的声明。
答案 0 :(得分:5)
绑定后,引用将成为其引用对象的别名,并且无法与其区分(decltype
除外)。由于int&
与int
的用法完全相同,因此声明跟随用法语法无法用于声明引用。
声明引用的语法仍然很简单。只需写下相应指针类型的声明,然后用*
或&
替换用于初始取消引用的&&
。