在两个语句中创建引用变量

mon*_*mon 2 c++ reference

int x;
int& foo = x;

// foo is now a reference to x so this sets x to 56
foo = 56;
Run Code Online (Sandbox Code Playgroud)

如何将语句拆分int& foo = x;为两个语句?

通过拆分,我的意思是使用两个语句,如下例所示:

int y;
int* ptr = &y;
Run Code Online (Sandbox Code Playgroud)

我可以把它int* ptr = &y分成两个声明指针的语句.

int* ptr;
ptr = &y; //then assigning the pointer to point to y
Run Code Online (Sandbox Code Playgroud)

怎么做类似的东西参考?我也在寻找关于为什么或为什么不解释的解释?

Sha*_*our 5

不,这不能做,只有少数情况可以从草案C++标准部分8.5.3 [dcl.init.ref]中省略参考的初始化器:

初始化程序只能在参数声明(8.3.5),函数返回类型的声明中,在类定义(9.2)中的类成员声明中,以及extern说明符是显式的地方被省略.用过的.[例如:

int& r1; // error: initializer missing
extern int& r2; // OK
Run Code Online (Sandbox Code Playgroud)

- 末端的例子]

至于为什么我们找到以下理由来解释为什么引用不能从C++的设计和演变中重置:

初始化后无法更改引用引用的内容.这是一旦C++引用被初始化,以后就无法引用它来引用不同的对象; 它无法重新绑定.我过去曾被Algol68引用所咬,r1=r2可以通过r1分配给所引用的对象,也可以根据r2的类型将新引用值分配给r1(重新绑定r1).我想避免在C++中出现这样的问题.