理解enable_shared_from_this的意義
問題:
問題:在探索,.許多開發人員都會遇到enable_shared_from_this 概念。儘管閱讀了文檔,但其實際應用仍然不清楚。您能否提供一個範例並解釋何時適合使用此類?
答案:class Y: public enable_shared_from_this<Y> { public: shared_ptr<Y> f() { return shared_from_this(); } }; int main() { shared_ptr<Y> p(new Y); shared_ptr<Y> q = p->f(); assert(p == q); assert(!(p < q || q < p)); // p and q must share ownership }enable_shared_from_this 授予獲得「this」有效的shared_ptr 實例的能力,甚至在只有「this」可用的情況下。如果沒有此功能,要取得指向「this」的shared_ptr,則需要將其定義為成員。 請考慮 Boost 文件中的以下範例:
f() 方法傳回一個有效的shared_ptr,儘管缺少成員實例。
需要注意的是,簡單地返回一個shared_ptr使用“this”作為參數構造不是一種可接受的解決方案,因為它會導致與合法的“共享”引用計數不同的引用計數。因此,刪除物件時,其中一個共用指標可能會出現懸空引用。 enable_shared_from_this 現在是 C 11 標準的一部分,使其可以透過 C 11 和 Boost 存取。以上是何時以及如何在 C 中使用 `enable_shared_from_this` ?的詳細內容。更多資訊請關注PHP中文網其他相關文章!