std::make_shared

来自cppreference.com
< cpp‎ | memory‎ | shared ptr

 
 
 
 
std::shared_ptr
成员函数
原文:
Member functions
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
修饰符
原文:
Modifiers
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
观察员
原文:
Observers
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
非成员函数
原文:
Non-member functions
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
make_shared
 
定义于头文件 <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

[编辑] 另请参阅

构造新的 shared_ptr
(公开成员函数) [编辑]
创建一个共享指针来管理使用分配器分配的新对象
(函数模板) [编辑]