かなり大きな classがあり、次のように等価性をチェックするためにMatrix
オーバーロードしたとします。operator==
bool operator==(Matrix &a, Matrix &b);
もちろん、Matrix オブジェクトは非常に大きいため、参照渡ししています。
Matrix::inverse()
これで、新しい Matrix オブジェクトを返すメソッドができました。ここで、次のように、比較で逆を直接使用したいと思います。
if (a.inverse()==b) { ... }`
問題は、逆メソッドが Matrix オブジェクトへの参照を返す必要があることです。2 つの質問:
この1回の比較でその参照を使用しているだけなので、これはメモリリークですか?
inverse() メソッドで返されるオブジェクトが boost::shared_ptr に属している場合はどうなりますか? メソッドが終了するとすぐに、shared_ptr が破棄され、オブジェクトは無効になります。shared_ptr に属するオブジェクトへの参照を返す方法はありますか?