Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Verschieben von Einzigartigen Zeigern | Einzigartige Zeiger
C++ Smart Pointers
course content

Kursinhalt

C++ Smart Pointers

C++ Smart Pointers

1. Einführung in Smart Pointers
2. Einzigartige Zeiger
3. Gemeinsame Zeiger
4. Schwache Zeiger
5. Fortgeschrittene Themen

book
Verschieben von Einzigartigen Zeigern

Kopieren nicht erlaubt

Ein std::unique_ptr ist ein Smart-Pointer, der ein dynamisch zugewiesenes Objekt verwaltet und dessen ordnungsgemäße Löschung sicherstellt, wenn es außer Gültigkeitsbereich gerät. Es hat exklusives Eigentum an dem Objekt, das es verwaltet, was bedeutet, dass keine zwei std::unique_ptr dasselbe Objekt gleichzeitig besitzen können.

cpp

main

copy
123456789
#include <iostream> #include <memory> int main() { std::unique_ptr<int> first_unique_pointer = std::make_unique<int>(42); // This will cause a compilation error: copying is not allowed std::unique_ptr<int> second_unique_pointer = first_unique_pointer; }

Verschieben eines Unique Pointers

Obwohl Kopieren nicht erlaubt ist, können Sie das Eigentum übertragen des Objekts mit std::move. Dies verschiebt die Ressource von einem std::unique_ptr zu einem anderen und lässt den ursprünglichen Zeiger leer.

cpp

main

copy
123456789101112131415
#include <iostream> #include <memory> int main() { std::unique_ptr<int> first_unique_pointer = std::make_unique<int>(42); // Transferring ownership using std::move std::unique_ptr<int> second_unique_pointer = std::move(first_unique_pointer); if (!first_unique_pointer) std::cout << "first_unique_pointer is now empty.\n"; std::cout << "second_unique_pointer owns the value: " << *second_unique_pointer << '\n'; }

Wenn Sie std::move verwenden, wird das Eigentum des Objekts von einem einzigartigen Zeiger auf einen anderen übertragen. Danach besitzt der ursprüngliche Zeiger das Objekt nicht mehr, und der neue Zeiger wird sein Besitzer.

Aufgabe

Swipe to start coding

Vervollständigen Sie den folgenden Code so, dass das Eigentum des dynamisch zugewiesenen Integers (mit dem Wert 42) sicher von ptr1 auf ptr2 übertragen wird.

Lösung

cpp

solution

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 2
toggle bottom row

book
Verschieben von Einzigartigen Zeigern

Kopieren nicht erlaubt

Ein std::unique_ptr ist ein Smart-Pointer, der ein dynamisch zugewiesenes Objekt verwaltet und dessen ordnungsgemäße Löschung sicherstellt, wenn es außer Gültigkeitsbereich gerät. Es hat exklusives Eigentum an dem Objekt, das es verwaltet, was bedeutet, dass keine zwei std::unique_ptr dasselbe Objekt gleichzeitig besitzen können.

cpp

main

copy
123456789
#include <iostream> #include <memory> int main() { std::unique_ptr<int> first_unique_pointer = std::make_unique<int>(42); // This will cause a compilation error: copying is not allowed std::unique_ptr<int> second_unique_pointer = first_unique_pointer; }

Verschieben eines Unique Pointers

Obwohl Kopieren nicht erlaubt ist, können Sie das Eigentum übertragen des Objekts mit std::move. Dies verschiebt die Ressource von einem std::unique_ptr zu einem anderen und lässt den ursprünglichen Zeiger leer.

cpp

main

copy
123456789101112131415
#include <iostream> #include <memory> int main() { std::unique_ptr<int> first_unique_pointer = std::make_unique<int>(42); // Transferring ownership using std::move std::unique_ptr<int> second_unique_pointer = std::move(first_unique_pointer); if (!first_unique_pointer) std::cout << "first_unique_pointer is now empty.\n"; std::cout << "second_unique_pointer owns the value: " << *second_unique_pointer << '\n'; }

Wenn Sie std::move verwenden, wird das Eigentum des Objekts von einem einzigartigen Zeiger auf einen anderen übertragen. Danach besitzt der ursprüngliche Zeiger das Objekt nicht mehr, und der neue Zeiger wird sein Besitzer.

Aufgabe

Swipe to start coding

Vervollständigen Sie den folgenden Code so, dass das Eigentum des dynamisch zugewiesenen Integers (mit dem Wert 42) sicher von ptr1 auf ptr2 übertragen wird.

Lösung

cpp

solution

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 2
Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
We're sorry to hear that something went wrong. What happened?
some-alt