我需要在这里使用shared_ptr,因为我无法更改API。
Foo1 *foo1 = new Foo1(...);
shared_ptr<Foo2> foo2(foo1);
这里的shared_ptr会处理释放foo1使用的内存吗?如果我理解正确的话,我不应该在 foo1 上调用delete,对吗?
是的。你是对的,但是初始化的正确方法foo2
is:
std::shared_ptr<Foo2> foo2 = std::make_shared<Foo1>();
Herb Sutter 讨论了您应该使用的原因std::make_shared<>()
here:
https://herbsutter.com/2013/05/29/gotw-89-solution-smart-pointers/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)