當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C++14 std::make_unique用法及代碼示例


std::make_unique 是 C++ 中的一個實用函數,在 C++14 中引入。它用於創建unique_ptr對象,這是一個管理動態分配對象的生命周期的智能指針。它在 <memory> 頭文件中定義。

用法

std::make_unique <object_type> (arguments);

參數

  • object_type:它是您要創建的對象的類型。
  • arguments: 它是object_type 構造函數的參數列表。

返回類型

  • 該函數返回類型為unique_ptrobject_type。

這是創建 std::unique_ptr 的首選方法,因為它比直接使用 new 運算符更安全,因為對象超出範圍時會自動銷毀。

std::make_unique 的示例

以下程序演示了如何在我們的程序中實現 std::make_unique()。

示例 1

C++


// C++ code to implement std::make_unique() 
#include <iostream> 
#include <memory> 
using namespace std; 
  
class Geeks { 
public: 
    Geeks() { cout << "Object Created\n"; }  // constructor 
    ~Geeks() { cout << "Object Destroyed"; }  // destructor 
}; 
  
void f() 
{ 
      // creating unique ptr object 
    unique_ptr<Geeks> o = make_unique<Geeks>(); 
} 
  
int main() 
{ 
  
    f(); 
    return 0; 
}
輸出
Object Created
Object Destroyed

示例 2

C++14


// C++ code to implement std::make_unique() 
#include <iostream> 
#include <memory> 
using namespace std; 
  
class Geeks { 
public: 
    int d; 
  
    // construtor 
    Geeks(int x) 
    { 
        this->d = x; 
        cout << "Object Created\n"; 
    } 
  
    // destructor 
    ~Geeks() { cout << "Object Destroyed"; } 
}; 
  
void f() 
{ 
    // creating unique ptr object 
    unique_ptr<Geeks> o = make_unique<Geeks>(10); 
    cout << o->d << endl; 
} 
  
int main() 
{ 
  
    f(); 
    return 0; 
}
輸出
Object Created
10
Object Destroyed

std::make_unique 的優點

  • 與 new 不同,make_unique 是異常安全的。
  • 如果未評估make_unique,則無需進行清理。


相關用法


注:本文由純淨天空篩選整理自as975862大神的英文原創作品 std::make_unique in C++ 14。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。