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,則無需進行清理。
相關用法
- C++14 std::integer_sequence用法及代碼示例
- C++14 std::quoted用法及代碼示例
- C++17 std::clamp用法及代碼示例
- C++17 std::lcm用法及代碼示例
- C++17 std::variant用法及代碼示例
- C++11 std::initializer_list用法及代碼示例
- C++11 std::move_iterator用法及代碼示例
- C++17 std::cyl_bessel_i用法及代碼示例
- C++ cos()用法及代碼示例
- C++ sin()用法及代碼示例
- C++ asin()用法及代碼示例
- C++ atan()用法及代碼示例
- C++ atan2()用法及代碼示例
- C++ acos()用法及代碼示例
- C++ tan()用法及代碼示例
- C++ sinh()用法及代碼示例
- C++ ceil()用法及代碼示例
- C++ tanh()用法及代碼示例
- C++ fmod()用法及代碼示例
- C++ acosh()用法及代碼示例
- C++ asinh()用法及代碼示例
- C++ floor()用法及代碼示例
- C++ atanh()用法及代碼示例
- C++ log()用法及代碼示例
- C++ trunc()用法及代碼示例
注:本文由純淨天空篩選整理自as975862大神的英文原創作品 std::make_unique in C++ 14。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。