Zeiger (auch im Deutschen gerne mit dem englischen Wort “Pointer” bezeichnet) sind ein fundamentales Feature von C++. Das merkt man unter Anderem daran, dass beinahe jedes C++-Anfängerbuch bereits in einem der ersten Kapitel Zeiger behandelt. Häufig handelt es sich dabei um einfache Beispiele, welche auch problemlos ohne Zeiger programmiert werden könnten. Da bleibt die Frage offen, wofür sie denn überhaupt nötig sind.
Inhaltsverzeichnis
Zusammenfassung
- Zeiger sind ein fundamentales Feature von C++ und werden bereits in den ersten Kapiteln von Anfängerbüchern behandelt.
- Die direkte Verwendung von Zeigern ist gefährlich und sollte vermieden werden, es sei denn, es gibt keine andere Möglichkeit.
- Zeiger werden benötigt, um dynamisch allokierten Speicher zu nutzen und sind wichtig für eine objektorientierte Programmierung.
- Polymorphismus in C++ funktioniert nur mit Zeigern oder Referenzen und erfordert Verständnis von Klassen, Objekten und Vererbung.
- Es wird gezeigt, wie man ein neues Objekt erstellt und einem Zeiger zuweist, und wie man Speicher freigibt, um Speicherlecks zu vermeiden.
- Zeiger sind ein grundlegender Bestandteil von C++ und werden für eine ernsthafte objektorientierte Programmierung dringend benötigt.
Zeiger wenn möglich vermeiden
Eines vorweg: Die direkte Verwendung von Zeigern ist gefährlich und kann selbst bei erfahrenen Programmierern gelegentlich zu Fehlern führen. Alleine schon aus diesem Grund solltest du Pointer nur verwenden, wenn es nicht anders geht. Bei Standarddatentypen (Integer, Boolean, Double, …) wirst du in der Regel keine Zeiger brauchen.
Speicherverwaltung
Zeiger sind nötig um dynamisch allokierten Speicher zu nutzen. Der new-Operator gibt einen entsprechend typisierten Pointer zurück, der auf den neu angelegten Speicherbereich zeigt. Somit sind Zeiger für eine saubere objektorientierte Programmierung unabdingbar. Das ist allerdings ein Kapitel, das für Anfäger doch noch eher ungeeignet ist und anfangs getrost beiseite geschoben werden kann.
Zeiger und Polymorphismus
Polymorphismus (“Vielgestaltigkeit”) funktioniert in C++ nur mit Zeigern oder Referenzen. Es geht im Prinzip darum, dass sich hinter einem Zeiger einer Basisklasse ein Objekt einer spezielleren (abgeleiteten) Klasse verbergen kann. Hierbei handelt es sich ebenfalls um sehr fortgeschrittene Techniken, die das Verständnis von Klassen, Objekten und Vererbung voraussetzen.
Anlegen eines neuen Objektes und Zuweisung an einen Zeiger
// Create a new object on the heap and retrieve pointer to it
CExampleClassBase* myObject = new CExampleClassDerived();
// Use ‘->’-operator for function calls through pointer
myObject->Print();
// Free memory
delete myObject;
myObject = NULL; // NULL maybe replaced by 'nullptr' since C++11
Obiger Codeausschnitt demonstriert wie ein neues Objekt mit dem new-Operator erzeugt wird. Ergebnis ist ein Pointer, der myObject zugewiesen wird. Das funktioniert in C++ ausschließlich mit Zeigern. Beachte, dass sich der Zeiger auf die Basisklasse bezieht, tatsächlich steht dahinter aber noch immer die abgeleitete Version (CExampleClassDerived) mit allen seinen Eigenschaften.
Dieser Polymorphismus ist, wie bereits erwähnt, nur mit Zeigern oder Referenzen möglich. Natürlich muss an geeigneter Stelle der auf dem Heap angelegte Speicher auch mit einem delete wieder freigegeben werden, da wir ansonsten ein Speicherleck (Memory Leak) produziert hätten. Der Zeiger wird anschließend auf NULL gesetzt (ab C++11 kann nullptr verwendet werden), damit nicht mehr versehentlich auf den Speicher zugegriffen wird.
Fazit
Zeiger sind ein grundlegender Bestandteil von C++ und demnach für eine ernsthafte Programmierung unbedingt erforderlich, speziell wenn du C++ auch tatsächlich objektorientiert verwendest (was du auch tun solltest).
Verstehst du die Anwendung eines Zeigers in einem konkreten Codeausschnitt nicht? Kein Problem, schicke uns ein Mail mit dem relevaten Code und deiner dazugehörigen Frage. Wir helfen dir weiter!
War der Artikel hilfreich für dich? Wenn ja, helfe uns und teile ihn bitte!
FAQ: Häufige Fragen
Zeiger, auch als “Pointer” bezeichnet, sind ein fundamentales Feature von C++. Sie ermöglichen den Zugriff auf Speicheradressen und die Manipulation von Daten.
Zeiger werden bereits in den ersten Kapiteln von C++-Anfängerbüchern behandelt, da sie eine wichtige Rolle in der Programmiersprache spielen. Es ist wichtig, ihr Konzept und ihre Anwendung zu verstehen.
Die direkte Verwendung von Zeigern kann gefährlich sein und zu Fehlern führen, insbesondere für unerfahrene Programmierer. Es ist ratsam, Zeiger nur zu verwenden, wenn es keine andere Möglichkeit gibt.
Zeiger werden benötigt, um dynamisch allokierten Speicher zu nutzen. Sie ermöglichen eine effiziente Speicherverwaltung und sind wichtig für die objektorientierte Programmierung in C++.
Ja, Zeiger sind ein grundlegender Bestandteil von C++. Sie werden für eine ernsthafte objektorientierte Programmierung dringend benötigt und sollten in entsprechenden Anwendungen verwendet werden.