簡體   English   中英

用 std::make_shared 創建 object 有什么好處<my_class> () 在 C++</my_class>

[英]What is the advantage of creating an object with std::make_shared<my_class>() in C++

在 C++ 中,您可以創建 class 和 object 的 ZA2F2ED4F8EBC2CBB4C21A29DC40AB61 如下。

class my_class {
    public:
        my_class() {}
        void my_function() {}
}

int main() {
    my_class my_cls_obj;
    my_cls_obj.my_function();
}

但是您也可以創建一個共享指針類型的 class object,如下所示。

class my_class : public std::enable_shared_from_this<my_class> {
    public:
        my_class() {}
        void my_function() {}
}

int main() {
    std::make_shared<my_class>()->my_function();

    // or

    std::shared_ptr<my_class> my_cls_shr_ptr = std::make_shared<my_class>();
    my_cls_shr_ptr->my_function();
}

創建 shared_ptr 類型的 class object 有什么好處?

在您所展示的情況下沒有任何內容,使用它將是一種悲觀。

如果您有多個新 object 的所有者,則使用std::shared_ptr / std::make_shared希望新的 object 的壽命與多個所有者的聯合壽命一樣長。

如果有的話,如果my_class是一個非常大的 class ,您可能希望在這種情況下使用std::unique_ptr / std::make_unique ,以確保它被放置在堆上而不是堆棧上。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM