假设我有一个类如下所示:
class A {
public: // I know, I know...
shared_ptr<string> aString;
};
我需要像这样拥有一个析构函数吗?
~A() {
aString.reset();
}
为了确保所有权正确释放,我进行了一些测试,似乎不需要这样做。即当A的实例超出作用域或被删除(如果我通过shared_ptr引用它,则重置),字符串也会被删除(我使用一个更复杂的示例来确认这一点)。然而,这可能与我所使用的编译器(clang-700.0.72)有关。我的问题是:这总是这种情况吗?还是最好像删除任何其他空指针一样明确重置这些实例?
std::unique_ptr
并分发引用吗?如果有人要对引用调用delete
,我相信你有权进行Linus Torvalds模仿。 - MSalters