C++引用变量声明语法推理

标签 c++ syntax reference

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/

相关文章:

c++ - 函数调用时出现 C 到 C++ 错误

syntax - Go 结构中的未命名数组

c++ - 当有人取消引用我的 end() 迭代器时我该怎么办?

c++ - 错误: cannot bind non-const lvalue reference of type ‘Position&’ to an rvalue of type ‘Position’

c++ - 从 const 引用初始化非常量对象时防止复制

c++ - 混合 C 和 C++ 代码时确保异常传播的机制

c++ - 如果我在类成员函数的定义中使用全局变量,是否违反了封装?

Java 2D 数组行与列语法问题

Javascript - this 与 window

c++ - 根据其中的数字子字符串拆分字符串