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

Kursinhalt

C++ Smart Pointers

C++ Smart Pointers

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

book
Einzigartige Zeiger und Vorlagen

Einzigartige Zeiger können mit Templates für eine effiziente und zuverlässige dynamische Speicherverwaltung verwendet werden. Sie können diese Kombination verwenden, um generische Klassen, Funktionen und Algorithmen zu erstellen.

Generische Klassen

Generische Klassen mit templatebasierten einzigartigen Zeigern sind eine ausgezeichnete Möglichkeit, verschiedene Arten von Ressourcen zu verwalten, ohne den Code wiederholen zu müssen. Zum Beispiel können Sie eine generische Container-Klasse wie folgt definieren:

cpp

genericContainer

copy
12345678910
// a template class which can hold different types of data template <typename T> class Container { private: std::unique_ptr<T> data; //the templated unique pointer object. public: // the constructor of our generic class, which can receive different types of values. Container(T value) : data(std::make_unique<T>(value)) {} T getValue() { return *data; } };

Diese Klasse ermöglicht es Ihnen, Container-Objekte für verschiedene Datentypen zu erstellen, wobei der einzigartige Zeiger automatisch den Speicher für jeden Typ verwaltet.

Generische Funktionen

Mit Hilfe von Templates können Sie auch generische Funktionen erstellen, die mit einzigartigen Zeigern arbeiten.

cpp

genericFuns

copy
12345
template <typename T> // a generic function that receives a unique pointer of type T void ModifyValue(std::unique_ptr<T>& ptr, T newValue) { *ptr = newValue; }

Die obige Funktion kann mit einzigartigen Zeigern verschiedener Typen verwendet werden, mit garantierter Typsicherheit und ordnungsgemäßer Speicherverwaltung. Zum Beispiel kann sie wie folgt aufgerufen werden:

Im obigen Code ändern wir den verwiesenen Wert (vom Typ Integer) des einzigartigen Zeigers von 42 auf 100 mit unserer generischen Funktion. Die Funktion kann ähnlich für String-, Float- oder Double-Typen aufgerufen werden.

Vorteile der Verwendung von einzigartigen Zeigern mit Templates

Das Schreiben von templated Code mit einzigartigen Zeigern bietet viele Vorteile, darunter:

  • Konsistenz und Typsicherheit: Templates fördern konsistente Codierungspraktiken. Wenn Sie einzigartige Zeiger mit Templates verwenden, etablieren Sie einen standardisierten Ansatz für Speicherverwaltung und Generizität in Ihrem Code. Dies führt zu einem vorhersehbareren Verhalten und weniger speicherbezogenen Problemen.

  • Code-Wiederverwendbarkeit: Die Kombination von einzigartigen Zeigern mit Templates ermöglicht es Ihnen, generischen Code zu schreiben, der mit verschiedenen Datentypen funktioniert. Dies ermöglicht es Ihnen, das DRY-Prinzip (Don’t Repeat Yourself) einzuhalten.

  • Automatische Bereinigung: Einzigartige Zeiger geben den Speicher automatisch frei, wenn sie aus dem Gültigkeitsbereich herausfallen. Dies vereinfacht die Speicherverwaltung bei der Arbeit mit Templates.

Aufgabe

Swipe to start coding

  • Erstellen Sie eine generische container-Klasse mit einzigartigen Zeigern. Der Container sollte in der Lage sein, sicher verschiedene Arten von Objekten zu halten. Verwenden Sie die Kommentare im folgenden Code als Anweisungen.

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 6
toggle bottom row

book
Einzigartige Zeiger und Vorlagen

Einzigartige Zeiger können mit Templates für eine effiziente und zuverlässige dynamische Speicherverwaltung verwendet werden. Sie können diese Kombination verwenden, um generische Klassen, Funktionen und Algorithmen zu erstellen.

Generische Klassen

Generische Klassen mit templatebasierten einzigartigen Zeigern sind eine ausgezeichnete Möglichkeit, verschiedene Arten von Ressourcen zu verwalten, ohne den Code wiederholen zu müssen. Zum Beispiel können Sie eine generische Container-Klasse wie folgt definieren:

cpp

genericContainer

copy
12345678910
// a template class which can hold different types of data template <typename T> class Container { private: std::unique_ptr<T> data; //the templated unique pointer object. public: // the constructor of our generic class, which can receive different types of values. Container(T value) : data(std::make_unique<T>(value)) {} T getValue() { return *data; } };

Diese Klasse ermöglicht es Ihnen, Container-Objekte für verschiedene Datentypen zu erstellen, wobei der einzigartige Zeiger automatisch den Speicher für jeden Typ verwaltet.

Generische Funktionen

Mit Hilfe von Templates können Sie auch generische Funktionen erstellen, die mit einzigartigen Zeigern arbeiten.

cpp

genericFuns

copy
12345
template <typename T> // a generic function that receives a unique pointer of type T void ModifyValue(std::unique_ptr<T>& ptr, T newValue) { *ptr = newValue; }

Die obige Funktion kann mit einzigartigen Zeigern verschiedener Typen verwendet werden, mit garantierter Typsicherheit und ordnungsgemäßer Speicherverwaltung. Zum Beispiel kann sie wie folgt aufgerufen werden:

Im obigen Code ändern wir den verwiesenen Wert (vom Typ Integer) des einzigartigen Zeigers von 42 auf 100 mit unserer generischen Funktion. Die Funktion kann ähnlich für String-, Float- oder Double-Typen aufgerufen werden.

Vorteile der Verwendung von einzigartigen Zeigern mit Templates

Das Schreiben von templated Code mit einzigartigen Zeigern bietet viele Vorteile, darunter:

  • Konsistenz und Typsicherheit: Templates fördern konsistente Codierungspraktiken. Wenn Sie einzigartige Zeiger mit Templates verwenden, etablieren Sie einen standardisierten Ansatz für Speicherverwaltung und Generizität in Ihrem Code. Dies führt zu einem vorhersehbareren Verhalten und weniger speicherbezogenen Problemen.

  • Code-Wiederverwendbarkeit: Die Kombination von einzigartigen Zeigern mit Templates ermöglicht es Ihnen, generischen Code zu schreiben, der mit verschiedenen Datentypen funktioniert. Dies ermöglicht es Ihnen, das DRY-Prinzip (Don’t Repeat Yourself) einzuhalten.

  • Automatische Bereinigung: Einzigartige Zeiger geben den Speicher automatisch frei, wenn sie aus dem Gültigkeitsbereich herausfallen. Dies vereinfacht die Speicherverwaltung bei der Arbeit mit Templates.

Aufgabe

Swipe to start coding

  • Erstellen Sie eine generische container-Klasse mit einzigartigen Zeigern. Der Container sollte in der Lage sein, sicher verschiedene Arten von Objekten zu halten. Verwenden Sie die Kommentare im folgenden Code als Anweisungen.

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 6
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