C++ 中的所有其他声明语法都很有意义,例如:
int i;
i
是一个int
int *i;
当 i
被取消引用时,结果是一个 int
int i[];
当i
下标时,结果为and int
int *i[];
当 i
被订阅时,结果被解引用,最终结果是一个 int
但是当您查看引用变量的语法时,这种原本一致的推理就会分崩离析。
int &i = x;
“当获取i
的地址时,结果是一个int
”是没有意义的。
我是不是遗漏了什么,或者这真的是其他语法背后明显推理的异常(exception)?如果是异常,为什么选择这种语法?
编辑:
This question解决了为什么可能为此目的选择了 &
符号,但没有解决是否存在一种普遍一致的方式来读取与上述方式不同的声明。
最佳答案
一旦绑定(bind),一个引用就变成了它所指对象的别名,并且无法与其区别开来(decltype
除外)。由于 int&
的使用与 int
完全相同,因此声明后使用语法无法用于声明引用。
声明引用的语法仍然非常简单。只需写下相应指针类型的声明,然后将用于初始解引用的*
替换为&
或&&
。
关于C++引用变量声明语法推理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30923452/