2017-08-17 5 views
-10

これはおそらく簡単な質問です。'='演算子をモーフィングと考える方が良いですか?

私はC言語で最小のバックグラウンドを持っ++と私の記憶が正しければ、私はこの演算子のこの方法を考えるように言われています

int x = 1,y = 2; 
x = y; //Put whatever is in y into x; 

しかし、左辺値と右辺値について読んだ後、私は考えることがそのがより適切だと思いますそれはこのように:xにあるものはyにあるものにmorph(変更)します。 これは、意味論的に参照されるオブジェクトが依然として同じオブジェクトであるためです。

+0

代入演算子 '=' 'rValue'の内容を' lValue'にコピーします。後者は 'non-constant'オペランドです。 "オブジェクトを変更する"とは何もしません。 – Raindrop7

+0

@ Raindrop7表示されているコードには右辺値はありません。少なくとも割り当てに関連するコードには含まれていません。 – juanchopanza

+2

@juanchopanza:はい、そこには左辺値から右辺値への変換のため:-) –

答えて

0

データ型がintの場合、その値の置き換えを「xをyに入れる」か「モーフィングする」かどうかは分かりません。とにかく、これは次のようにonline c++ standard draft concerning assignment operatorプロセスを記載している:

5.17(2)単純な割り当て(=)は、式の値は、オブジェクトの左オペランドで参照することを置き換えます。

これがあなたの質問に答えるかどうかはわかりませんが、この定式化を取ると、「オブジェクトの値は置き換えられますが、オブジェクトは同じままです」と言うことができます。

+0

オペレータのオーバーロード時にこれらのセマンティクスを保持することが実際に非常に重要です。オペレーターが「予期せずに」行動するよりも悪いことはありません。 –

関連する問題