◐ Shell
clean mode source ↗

std::make_shared – cppreference.com

Aus cppreference.com

<metanoindex/>

<tbody> </tbody>

definiert in Header

<memory>

template< class T, class... Args > shared_ptr<T> make_shared( Args&&... args );

Erzeugt ein Objekt vom Typ T und wickelt es in einem std::shared_ptr mit args als Parameter-Liste für den Konstruktor T .

Original:

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.

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Parameter

args -

Liste der Argumente, mit denen eine Instanz T gebaut werden soll .

Original:

list of arguments with which an instance of T will be constructed.

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Rückgabewert

std::shared_ptr einer Instanz des Typs T .

Original:

std::shared_ptr of an instance of type T.

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Ausnahmen

Kann std::bad_alloc oder eine Ausnahme von der contructor der T geworfen werfen .

Original:

May throw std::bad_alloc or any exception thrown by the contructor of T.

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Notes

Diese Funktion Speicher für die T-Objekt und für die shared_ptr der Kontrolle Block mit einem einzigen Speicherzuweisung. Im Gegensatz dazu führt die Erklärung std::shared_ptr<T> p(new T(Args...)) zwei Speicherzuordnungen, die unnötigen Overhead entstehen können .

Original:

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.

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Beispiel

#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;
}

Output:

Siehe auch

erzeugt einen neuen shared_ptr
(öffentliche Elementfunktion) [edit]
erzeugt einen shared_ptr, der ein neues Objekt verwaltet, das mittels eines Allokators erzeugt wird.
(Funktions-Template) [edit]