日常怀疑自己真的会写cpp?
1 | struct A { |
当A* a被shared_ptr托管的时候,如何在func获取自身的shared_ptr成了问题.
如果写成:
1 | void func() { |
又用a新生成了一个shared_ptr: local_sp_a, 这个在生命周期结束的时候可能将a直接释放掉.
这里就需要用enable_shared_from_this改写:
1 | struct A : public enable_shared_from_this { |
shared_from_this会从weak_ptr安全的生成一个自身的shared_ptr.