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

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

Patricia Arquette
Patricia Arquette原創
2024-12-15 04:52:34690瀏覽

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn