2012-03-14 19 views
2

参照宣言と代入を1つのステートメントに記述する際に問題はありますか? gccを使って試してみましたが、うまくいくようです。同じステートメントで参照宣言と代入を記述する

int x = 10; 
cout << "x = " << x << "\n"; 

int &y = x = 11; 
cout << "x = " << x << "\n"; 
cout << "y = " << y << "\n"; 

は私に期待される出力

x = 10 
x = 11 
y = 11 

を与え、これはほとんどのコンパイラで動作するように期待されていたり、移植の問題があるでしょうか?

+0

現代のシステムのほとんどでうまく機能していても、できるだけそれを避ける方がよいでしょう。あなたが他の安全なパスを持っているときに不要なリスクを取る理由 –

+0

@Rohit - はい、私はそれを避けることに決めましたが、それがうまくいくかどうか、とにかく他の問題があるかどうかをチェックしたかったのです。 – DanS

答えて

5

C++には、任意の式で(少なくとも の原則で)使用できる代入演算子があります。内ことに注意:

int& y = x = 11; 

最初=ない演算子です。それはデータ 定義の構文の一部です。これに続くもの=は式であり、 の値はintの左辺値になります。 xintであるので、x = 11タイプは intです。組み込みの代入演算子の結果は左辺値 が代入対象のオブジェクトを参照しているため、 あなたは必要条件を満たしています。

もちろん、それは良いコードだとは限りません。

関連する問題