Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Vorteile der Verwendung von Smart-Pointern und Referenzen | Einführung in Smart Pointer
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
Vorteile der Verwendung von Smart-Pointern und Referenzen

Es gibt mehrere Vorteile der Verwendung von Smart-Pointern und Referenzen in C++. Lassen Sie uns in diesem Kapitel einige davon betrachten, bevor wir in den praktischeren Teil dieses Kurses übergehen.

Vorteile von Smart-Pointern

Smart-Pointer ermöglichen es Entwicklern, ausdrucksstärkeren, saubereren und wartungsfreundlicheren Code zu schreiben. Dies reduziert erheblich das Potenzial für technische Schulden oder menschliche Fehler.

Durch die automatische Freigabe verringern Smart-Pointer nicht nur die Wahrscheinlichkeit von ungültigem Speicherzugriff und Speicherlecks, sondern ermöglichen es Entwicklern auch, ihre Zeit produktiver zu nutzen.

Smart-Pointer verbessern auch die Ausnahmesicherheit. Wenn eine Ausnahme ausgelöst wird, stellen sie sicher, dass Ressourcen automatisch bereinigt werden, ohne dass ein manuelles Eingreifen erforderlich ist.

cpp

main

copy
12345678910111213141516171819202122232425
#include <iostream> #include <memory> void processResource() { // simulate resource allocation with a smart pointer std::shared_ptr<int> smartPtr(new int(42)); // suppose an exception occurs during processing throw std::runtime_error("An exception occurred during resource processing"); } int main() { try { processResource(); } catch (const std::exception& e) { std::cerr << "Exception caught: " << e.what() << std::endl; } // at this point, you don't need to manually release the resource that the smart pointer held. // the smart pointer will automatically clean up the resource when it goes out of scope. std::cout << "Program still continues after exception handling" << std::endl; // the smart pointer ensures that the resource is safely deallocated, even in the presence of exceptions. }

Im obigen Code stoßen wir auf eine Ausnahme, während wir eine Ressource verarbeiten, die mit einem Shared Pointer zugewiesen wurde. Da ein Shared Pointer ausnahmesicher ist, gibt er die Ressource trotz der Ausnahme automatisch frei. Lesen Sie die Codekommentare für mehr Klarheit.

Denken Sie daran

Smart Pointer können die Leistung optimieren, indem sie einen effizienteren Modus der Speicherzuweisung und -freigabe bieten.

Vorteile von Referenzen

Referenzen können auch die Lesbarkeit und Ausdruckskraft Ihres Codes verbessern. Wenn sie mit klaren Namenskonventionen verwendet werden, machen sie Ihren Code selbstdokumentierend. Betrachten Sie die folgende Funktion:

h

Example

copy
12345678
void calculateTotalPrice(const std::vector<double>& prices, double& total) { // calculate the total price of items total = 0.0; //initialize the total for (double price : prices) { // iterate over the vector total += price; // calculate the total price } }

Allein durch die Betrachtung der Funktionsdefinition wird sofort deutlich, dass die Variable „total“ modifiziert wird, um den Gesamtpreis an den Aufrufer zu kommunizieren.

  • Referenzen sind auch relativ sicherer zu verwenden als Zeiger, da sie bei der Initialisierung nicht auf null gesetzt werden können. Bei umsichtiger Verwendung können Referenzen Entwicklern helfen, Laufzeitfehler und Abstürze zu vermeiden.

  • Referenzen erlauben es Ihnen, die Werte der ursprünglichen Variable zu ändern, was zu kompakterem und effizienterem Code führt. Zum Beispiel können Sie beim Iterieren über die Elemente einer Sammlung eine Referenz verwenden, um Elemente direkt zu aktualisieren, anstatt mit Indizes zu arbeiten.

Im obigen Code verwenden wir Referenzen, um über einen Vektor zu iterieren, anstatt Indizes.

Wie tragen Smart-Pointer zur Ausnahmesicherheit bei?

Wie tragen Smart-Pointer zur Ausnahmesicherheit bei?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 5
We're sorry to hear that something went wrong. What happened?
some-alt