当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。