メンバ変数の参照返しについて2
前回の記事にコメントをいただいたおかげでこれのデメリットを見つけることができました。
class Hoge { public: const Foo& foo()const{return foo_;} private: Foo foo_; }; Hoge get_hoge() { return Hoge(); }
というような記述があって
const Foo& foo = get_hoge().foo();
というような記述を書くとget_hoge()から返されたHogeのオブジェクトの寿命が尽きるのにも関わらずfooがそのオブジェクトの参照を持ち続けることができてしまいますね。
fooの参照先は恐らく消滅していて値の表示が正しくても偶然書き換えられていないという可能性が高いと思われます。
.....というわけでやはり今後もバグを防ぎたいのならcopyを返したほうが良さそうです(一部例外を除いて)
コメントをくださった皆様、ありがとうございました。自分の中にあった疑問はある程度解決したと思います。