如何让一个对象的成员shared_ptr在该对象调用析构函数
c4droid吧
全部回复
仅看楼主
level 2
bd7ce 楼主
如何让一个对象的成员shared_ptr在该对象调用析构函数之前析构?
没事在析构函数里cout了一下,结果竟然是shared_ptr成员要比对象本体后析构!
ps:c++吧也太难找了吧……
2019年05月18日 16点05分 1
level 14
如果一进析构函数这个shared_ptr就被干掉了,那么你就无法再使用它了,你以为本来就不再需要它了,但是实际的逻辑是,它还是有可能在结束析构函数之前还有利用价值。
2019年05月18日 23点05分 2
突然感觉管理变难了……难道要按一定顺序析构还是得用原始指针?
2019年05月19日 01点05分
@bd7ce 既然你的理解里析构函数一进来,类成员都先废了,那重载析构函数还有什么必要
2019年05月19日 05点05分
level 14
可能我没有怎么审题,应该是你在delete 这个实例前,先把成员shared_ptr 直接 =null_ptr就可以了
2019年05月19日 05点05分 3
level 8
这样做有什么意义?
如果需要在对象析构时提前释放成员shared_ptr对资源的所有权,调用shared_ptr.reset()就可以了。但shared_ptr最初持有的对象是否被析构取决与你的代码。析构shared_ptr本身我一时难以看出有什么意义。
2019年05月19日 12点05分 4
析构当然是指的析构指向的对象啊- -如果直接reset的话会不会也会在出作用域以后才析构呢
2019年05月19日 15点05分
@bd7ce 如果shared_ptr独占对象所有权,即shared_ptr.unique()返回true,那么shared_ptr所持有的对象会在调用shared_ptr.reset()后立即析构
2019年05月19日 15点05分
回复 ♋苦作舟 :thx[OK]
2019年05月20日 23点05分
1