次のクラスを検討してください。
struct MyClass {
int mId;
MyClass(int id): mId(id) {}
~MyClass() { std::cout << "deleting: " << mId << std::endl; }
};
そして使用法:
std::shared_ptr<MyClass> p(new MyClass(0));
MyClass& m = *p;
m = MyClass(2);
結果は次のとおりです。
deleting: 2
deleting: 2
理解を助けてください:
- オブジェクトが 2 つある理由
MyClass(2)
(デストラクタ ログでの仮定) - これはメモリリークですか?
MyClass(0)
漏れてはいけない?
ありがとうございました。