C ++での代入演算子は、参照値または戻り式であります

この記事はから来ている式が参照を持っているだろう、なぜC ++? 削除された侵略

割り当ては、「戻り値の代入式が参照型であるが、参照を持つことになります。これは、2つの質問が含まれている意味


  • まず第一に、戻り値の代入式なぜ必要がありますか?表現チェーンの複製をサポートするために!
int a,b;
a = b = 1;
// 等号运算符是右结合的,相当于:
a = (b = 1);

実際には、戻り値はそれほど代入式の戻り値を持つように、Aに割り当てられ、B = 1です。


  • なぜ値を返しますが、それへの参照を返していませんか?効率のために!そして、通常、一定の参照を返します。たとえば、割り当てた変数は、プリミティブデータ型ではなく、オブジェクト:
Obj a, b, c;
a = b = c;

B = Cが値を返す場合、それは端=オペレータに必要であり、戻り値に結果のコピーコンストラクタコピーを呼び出す(機能スタック領域の端部は、ローカル変数がスタック領域に格納されている間、破壊されるため)。あなたが参照を返す場合は、戻り値が直接、元の変数を参照するコール・複製する必要はありません。

67元記事公開 ウォン称賛77 ビュー150,000 +を

おすすめ

転載: blog.csdn.net/weixin_37720172/article/details/104434498