问题: 在非所有者资源上使用裸指针是否有令人信服的理由,或者我们应该使用 weak_ptr
?
CPP.reference 指出:
std::weak_ptr
模拟临时所有权:当对象只需要在存在时才能访问,并且它可能随时被其他人删除时
但是,Which kind of pointer do I use when? 中的被接受回答中有以下声明:
对于非所有者资源的引用以及在您知道资源将超过引用对象/作用域的情况下,请使用笨指针(裸指针)或引用。首选引用并在需要 nullability 或 resettability 时使用裸指针...如果您想要对资源进行非所有权引用,但不知道资源是否会超过引用它的对象,请将资源打包到
shared_ptr
中并使用weak_ptr
。
这个答案后面有很多关于裸指针使用的来回讨论,但没有真正解决问题。我看不出使用愚笨指针的任何理由。难道我漏掉了什么?
observer_ptr
可能会解决上述大部分问题。 - vsoftco