以这个示例代码为例:
int a = 10;
int b = 20;
int c = 30;
int & foo1() {
qDebug() << "foo1" << endl;
return a;
}
int & foo2() {
qDebug() << "foo2" << endl;
return b;
}
int & foo3() {
qDebug() << "foo3" << endl;
return c;
}
int main(void)
{
foo1() = foo2() = foo3() = 7;
}
由于分配从右到左,我希望看到foo3
第一个和foo1
最后一个,但事实恰恰相反。
是否具体定义了此类场景的规则以及如何定义?=
此外,编译器是否区分赋值和其他运算符,如果您在与初始化不同的上下文中使用运算符,这怎么可能?也许链分配的处理方式与其他链接不同?