このコード例を見てください:
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
最後を見ると思っていましたが、逆です。
そのようなシナリオのルールは具体的にどのように定義されていますか? また、コンパイラは割り当てと他の演算子を=
区別しますか?初期化とは異なるコンテキストで演算子を使用している場合、それはどのように可能でしょうか? チェーン割り当ては、他のチェーンとは異なる方法で処理されるのでしょうか?