Пространства имён
Варианты
Действия

std::make_shared

Материал из cppreference.com
< cpp‎ | memory‎ | shared ptr

 
 
 
 
 
Определено в заголовочном файле <memory>
template< class T, class... Args >
shared_ptr<T> make_shared( Args... args );
Создает объект типа T и оборачивает его в std::shared_ptr использованием args как список параметров для конструктора 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.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

Содержание

[править] Параметры

args -
Список аргументов, с которыми экземпляр T будет построен .
Оригинал:
list of arguments with which an instance of T will be constructed.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

[править] Возвращаемое значение

std::shared_ptr экземпляра типа T.
Оригинал:
std::shared_ptr of an instance of type T.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

[править] Исключения

Может бросить std::bad_alloc или любое исключение из конструктора T.

[править] Заметки

Эта функция выделяет память для объекта T и блока управления shared_ptr за один раз, в отличие от декларации std::shared_ptr<T> p(new T(Args...)), выполняющей два выделения памяти и способной привести к ненужным потерям производительности.

[править] Пример

#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
(public функция-член) [edit]
создает общий указатель, который управляет новый объект выделяется использованием распределителя
Оригинал:
creates a shared pointer that manages a new object allocated using an allocator
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(шаблон функции) [edit]