C++相談室2

このエントリーをはてなブックマークに追加
464デフォルトの名無しさん
>>450
まあ大体はそれでいいと思うが、アセンブラだと

; int& f();
mov eax,offset value
ret

; int f();
mov eax,[value]
ret

という感じだと思われるから、その後のアクセスなど考えると前者が軽いかもしれん。
要は、戻り値がintでなくint&だから、一般的実装ではポインタ的に動きそうだと。
でもインライン化されるなら話は全く変わる。

どっちにしても、個人的にint& f();みたいな関数を書きたい局面は滅多に無いと思う。
でもMyClass& f();みたいにクラスを返すなら話は全く変わるし、頻繁に使ってる。

つーか組込型への参照を返す場面ってほとんど無いんじゃ。
クラスメンバアクセサとかなら、半端な隠蔽せんで読みと書きに個別の関数作るしな。

>>458
いや、どう見ても自動変数じゃないから鬼門ではなかろ。
int& f() { int value; return value; }
なら即自滅だが。