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