[英]Can pointer 'this' be a shared pointer?
我對C ++中的this
指針有疑問。
如果我創建一個指針,
std::shared_ptr<SomeClass> instance_1;
instance_1
的this
指針還是共享指針嗎?
我問這個問題的原因是,如果我使用指針this
在其方法中啟動另一個線程。 它會復制shared_ptr
嗎?
instance_1
的this
指針還是共享指針嗎?
號的this
指針是指向對象的指針的當前實例,它指向相同的共享對象在這種情況下,共享的指針。 但這本身不是shared_ptr
。 它是SomeClass*
類型的。
我問這個問題的原因是...
要創建shared_ptr
從this
, SomeClass
,必須從導出std::enable_shared_from_this
。 然后就可以使用了;
shared_from_this()
; 返回一個共享了*this
所有權的shared_ptr
在線程之間共享這種狀態時,請注意競爭條件和鎖定問題等。
不,你不能讓this
是一個共享的指針。 最近的事情是從std::enable_shared_from_this
繼承並通過調用獲取共享指針:
this->shared_from_this();
細節可以在這里找到
另一種方法是使用侵入共享指針,如boost::intrusive_ptr
,在this
將不被共享,雖然指針,但可以轉換為一個。
不能。創建指向對象的共享指針不會使this
對象成為共享指針。
如果你想從一個共享指針this
,你可能要至少考慮使用std::enable_shared_from_this
。
不, this
始終是原始指針。 如果您希望另一個線程擁有shared_ptr的副本,則必須為其提供instance_1
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.