std::make_shared – cppreference.com
Aus cppreference.com
<metanoindex/>
<tbody> </tbody>
| definiert in Header <memory> |
||
|
|
||
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 Original: list of arguments with which an instance of The text has been machine-translated via Google Translate. |
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] | |