首頁 > 後端開發 > C++ > `enable_shared_from_this` 如何解決 C 中的共用指標擁有權問題?

`enable_shared_from_this` 如何解決 C 中的共用指標擁有權問題?

Patricia Arquette
發布: 2024-12-15 04:52:34
原創
684 人瀏覽過

How Does `enable_shared_from_this` Solve Shared Pointer Ownership Issues in C  ?

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板