enable_shared_from_this 如何協助維護物件擁有權?
在探索 Boost.Asio 範例時,您可能遇到過enable_shared_from_this。儘管參考了文檔,但其用法仍然不清楚。這裡有一個全面的解釋和一個示例來闡明其目的。
enable_shared_from_this 允許您在只能存取物件本身(由 this 表示)時為物件建立有效的 shared_ptr 實例。如果沒有它,除非它已經被定義為成員,否則將不可能獲得共享指標。
考慮以下範例:
class Y: public enable_shared_from_this<Y> { public: shared_ptr<Y> f() { return shared_from_this(); } };
這裡,方法 f() 可以傳回一個有效的值shared_ptr,即使它缺少成員實例。請注意,以下方法將失敗:
class Y: public enable_shared_from_this<Y> { public: shared_ptr<Y> f() { return shared_ptr<Y>(this); } };
結果將是兩個具有不同引用計數的shared_ptr。當物件被刪除時,其中一個將成為懸空引用。
需要注意的是,enable_shared_from_this 現在是 C 11 標準的一部分,可以從那裡以及 Boost 存取它。
以上是`enable_shared_from_this` 如何解決 C 中的共用指標擁有權問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!