std::make_shared
来自cppreference.com
< cpp | memory | shared ptr
该页由英文版wiki使用Google Translate机器翻译而来。
该翻译可能存在错误或用词不当。鼠标停留在文本上可以看到原版本。你可以帮助我们修正错误或改进翻译。参见说明请点击这里. |
在头文件 <memory> 中定义
|
||
template< class T, class... Args > shared_ptr<T> make_shared( Args... args ); |
||
构造一个对象的类型
T
,并把它封装在一个std::shared_ptrargs
的构造函数的参数列表的T
的原文:
Constructs an object of type
T
and wraps it in a std::shared_ptr using args
as the parameter list for the constructor of T
.目录 |
[编辑] 参数
args | - | 将兴建的一个实例
T 的参数列表.原文: list of arguments with which an instance of T will be constructed. |
[编辑] 返回值
std::shared_ptr的一个实例的类型
T
.原文:
std::shared_ptr of an instance of type
T
.[编辑] 例外
可能会引发std::bad_alloc或抛出的任何异常的构造器的
T
.原文:
May throw std::bad_alloc or any exception thrown by the contructor of
T
.[编辑] 注释
这个函数分配的内存为T的对象,并为与一个内存分配的shared_ptr的控制块。与此相反,声明
std::shared_ptr<T> p(new T(Args...))
执行两个内存分配,这可能会招致不必要的开销.原文:
This function allocates memory for the T object and for the shared_ptr's control block with a single memory allocation. In contrast, the declaration
std::shared_ptr<T> p(new T(Args...))
performs two memory allocations, which may incur unnecessary overhead.[编辑] 示例
#include <iostream> #include <memory> void foo(std::shared_ptr<int> i) { (*i)++; } int main() { auto sp = std::make_shared<int>(10); foo(sp); std::cout << *sp << std::endl; }
输出:
11
[编辑] 另请参阅
constructs new shared_ptr (公共成员函数) | |
创建一个共享指针管理使用分配器分配一个新的对象 原文: creates a shared pointer that manages a new object allocated using an allocator (函数模板) |