std::make_pair 四种cast ( static_cast, const_cast, reinterpret_cast, dynamic_cast) 四种智能指针( auto_ptr<>, unique_ptr<>, shared_ptr<>, weak_ptr<>) std::forward std::move 移动语义 右值引用 emplace_back 和 push_back
unique (C++20 前) 检查所管理对象是否仅由当前shared_ptr的对象管理 (公开成员函数) operator bool 检查是否有关联的管理对象 (公开成员函数) owner_before 提供基于持有者的共享指针排序 (公开成员函数) owner_hash (C++26) 提供基于所有者的共享指针散列 ...
However, std::array or std::vector (or std::string) are almost always better choices than using std::unique_ptr with a fixed array, dynamic array, or C-style string. Best practice Favor std::array, std::vector, or std::string over a smart pointer managing a fixed array, dynamic arra...
template<classT,classU>std::shared_ptr<T>dynamic_pointer_cast(conststd::shared_ptr<U>&r)noexcept{if(autop=dynamic_cast<typenamestd::shared_ptr<T>::element_type*>(r.get()))returnstd::shared_ptr<T>{r, p};elsereturnstd::shared_ptr<T>{};} ...
ptr->weak_this=std::shared_ptr<std::remove_cv_t<U>> (*this,const_cast<std::remove_cv_t<U>*>(ptr));。 对weak_this成员的赋值不是原子的,且与任何到同一对象的潜在并发访问冲突。这确保将来对shared_from_this()的调用,将与此裸指针构造函数所创建的std::shared_ptr共享所有权。
一、shared_ptr认知及陷阱 shared_ptr的类型转换不能使用一般的static_cast,这种方式进行的转换会导致转换后的指针无法再被shared_ptr对象正确的管理。应该使用专门用于shared_ptr类型转换的 static_pointer_cast<T>() , const_pointer_cast<T>() 和dynamic_pointer_cast<T>()。
将std::unique_ptr转换成std::shared_ptr: std::shared_ptr temp = std::shared_ptr(std::move(TObject));赞 收藏 评论 分享 举报 上一篇:七十八、static_cast和dynamic_cast,static_poonter_cast和dynamic_pointer_cast区别 下一篇:七十三、未找到*.obj文件...
virtual void* _M_get_deleter(const std::type_info& __ti) noexcept override { auto __ptr = const_cast<typename remove_cv<_Tp>::type*>(_M_ptr()); // Check for the fake type_info first, so we don't try to access it // as a real type_info object. Otherwise, check if it'...
一、shared_ptr认知及陷阱 shared_ptr的类型转换不能使用一般的static_cast,这种方式进行的转换会导致转换后的指针无法再被shared_ptr对象正确的管理。应该使用专门用于shared_ptr类型转换的 static_pointer_cast<T>() , const_pointer_cast<T>() 和dynamic_pointer_cast<T>()。
std::static_pointer_cast std::strftime std::swap(std::any) std::swap(std::function) std::swap(std::optional) std::swap(std::pair) std::swap(std::shared_ptr) std::swap(std::tuple) std::swap(std::unique_ptr) std::swap(std::variant) std::swap(std::weak_ptr) std::system std...