[英]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.