在一个声明中编写引用声明和赋值是否有任何问题.我已经尝试使用gcc,它似乎工作.
int x = 10;
cout << "x = " << x << "\n";
int &y = x = 11;
cout << "x = " << x << "\n";
cout << "y = " << y << "\n";
Run Code Online (Sandbox Code Playgroud)
给了我预期的输出
x = 10
x = 11
y = 11
Run Code Online (Sandbox Code Playgroud)
这是否适用于大多数编译器或是否存在可移植性问题?
在C++中,有一个赋值运算符,可以在任何表达式中使用(至少在原则上).请注意:
int& y = x = 11;
Run Code Online (Sandbox Code Playgroud)
第一=是不操作; 它是数据定义语法的一部分.接下来=是一个表达式,它必须导致类型的左值int.既然x是int,x = 11有类型
int.并且内置赋值运算符的结果是左值,指的是作为赋值目标的对象,因此您已满足必要条件.
当然,这并不意味着它是好的代码.