Scott Meyers による効果的な C++は、第 5 章の項目 28 で、「ハンドル」(ポインター、参照、またはイテレーター) をオブジェクト内部に返さないように指示しており、それは間違いなく良い点です。
つまり、これをしないでください:
class Family
{
public:
Mother& GetMother() const;
}
カプセル化を破棄し、プライベート オブジェクト メンバーを変更できるようにするためです。
これもしないでください:
class Family
{
public:
const Mother& GetMother() const;
}
「ぶら下がりハンドル」につながる可能性があるためです。つまり、既に破棄されているオブジェクトのメンバーへの参照を保持することになります。
さて、私の質問は、良い代替手段はありますか? お母さんが重いと想像してみてください!ここで、参照ではなく Mother のコピーを返すと、GetMother はかなりコストのかかる操作になります。
このような場合はどのように処理しますか?