abe*_*ier 11 c++ shared-ptr c++11
虽然我不明白为什么没有operator==为shared_ptr和unique_ptr,我不知道为什么有没有为shared_ptr和weak_ptr.特别是因为你可以创建weak_ptr一个引用shared_ptr.我认为99%的时间都是你想要的lhs.get() == rhs.get().我现在要继续向我的代码介绍,除非有人能给我一个充分的理由,为什么不应该做这样的事情.
operator==
shared_ptr
unique_ptr
weak_ptr
lhs.get() == rhs.get()
CB *_*ley 17
weak_ptr没有get()方法,因为你需要weak_ptr在访问底层指针之前显式锁定.明确这一点是一个深思熟虑的设计决策.如果转换是隐式的,那么编写代码将是非常容易的,如果shared_ptr对象的最后一个被销毁,而从中获取的基础指针weak_ptr仍然被检查.
get()
这个提升页面很好地描述了陷阱,为什么weak_ptr有这么有限的界面.
如果您需要进行快速比较,那么您可以这样做shared == weak.lock().如果比较结果为真,那么您知道weak必须仍然有效,因为您shared_ptr对同一个对象保持独立.如果比较返回false,则没有这样的保证.
shared == weak.lock()
weak
归档时间:
14 年 前
查看次数:
3213 次
最近记录:
7 年,10 月 前