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)
怎么做类似的东西参考?我也在寻找关于为什么或为什么不解释的解释?
不,这不能做,只有少数情况可以从草案C++标准部分8.5.3
[dcl.init.ref]中省略参考的初始化器:
初始化程序只能在参数声明(8.3.5),函数返回类型的声明中,在类定义(9.2)中的类成员声明中,以及extern说明符是显式的地方被省略.用过的.[例如:
Run Code Online (Sandbox Code Playgroud)int& r1; // error: initializer missing extern int& r2; // OK
- 末端的例子]
至于为什么我们找到以下理由来解释为什么引用不能从C++的设计和演变中重置:
初始化后无法更改引用引用的内容.这是一旦C++引用被初始化,以后就无法引用它来引用不同的对象; 它无法重新绑定.我过去曾被Algol68引用所咬,
r1=r2
可以通过r1分配给所引用的对象,也可以根据r2的类型将新引用值分配给r1(重新绑定r1).我想避免在C++中出现这样的问题.