kennen:lib:unique_ptr
no way to compare when less than two revisions
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
— | kennen:lib:unique_ptr [2017-03-24 09:29] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== unique_ptr< | ||
+ | ''# | ||
+ | Intelligenter Zeiger mit Verschiebesemantik. | ||
+ | |||
+ | ===== Methoden ===== | ||
+ | | '' | ||
+ | |'' | ||
+ | |'' | ||
+ | |||
+ | Die Freigabe der verwalteten Resource erfolgt durch den automatisierten Aufruf des Operators [[../ | ||
+ | Als '' | ||
+ | |||
+ | ===== Siehe auch ===== | ||
+ | | ||
+ | |||
+ | ===== Beispiel ===== | ||
+ | <code cpp unique_ptr.cpp> | ||
+ | #include < | ||
+ | #include < | ||
+ | |||
+ | std:: | ||
+ | { | ||
+ | return std:: | ||
+ | } | ||
+ | |||
+ | void sink(std:: | ||
+ | { | ||
+ | std::cout << *p << " erhalten.\n"; | ||
+ | } | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | auto p(source(3.1415)); | ||
+ | |||
+ | std::cout << *p << " erschaffen\n"; | ||
+ | sink(std:: | ||
+ | if (!p) std::cout << " | ||
+ | |||
+ | sink(source(2.718)); | ||
+ | |||
+ | // dynamisches Feld - bevorzuge std:: | ||
+ | |||
+ | int size = 10; | ||
+ | std:: | ||
+ | |||
+ | for (int i = 0; i < size; ++i) // Buchhaltung über Anzahl Elemente | ||
+ | { // in Verantwortung des Programmierers! | ||
+ | squares[i] = i*i; | ||
+ | std::cout << squares[i] << ' '; | ||
+ | } | ||
+ | return 0; // automatische Freigabe | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Die Funktion '' | ||
+ | In C++11 lässt sie sich aber leicht ergänzen: | ||
+ | |||
+ | <code cpp make_unique.cpp> | ||
+ | #include < | ||
+ | #include < | ||
+ | |||
+ | template <class T, class... Args> | ||
+ | std:: | ||
+ | { | ||
+ | return std:: | ||
+ | } | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | auto p = make_unique< | ||
+ | |||
+ | std::cout << *p << " erschaffen\n"; | ||
+ | return 0; | ||
+ | } | ||
+ | |||
+ | </ |
kennen/lib/unique_ptr.txt · Zuletzt geändert: 2017-03-24 09:29 von 127.0.0.1