C++: Ein Keyword für drei Konstrukte

Sie sind wahrscheinlich vertraut mit dem Konzept der Konstanten und dem Keyword const, das Variablen als Konstanten deklariert. Aber const kann mehr als nur Konstanten deklarieren. Es kann auch Const-Pointers und Const-Member-Functions (Elementfunktionen) deklarieren.

Const-Deklarationen

Da Const-Deklarationen nur ein einziges Keyword verwenden, das sich auf drei verschiedene Konstrukte bezieht, können sie recht verwirrend sein. Schauen wir uns diese Konstrukte im Einzelnen an.

Const-Objekte
Deklariert man ein Objekt als const (der Begriff Objekt wird hier im weiteren Sinne verwendet: ein Objekt ist ein Speicherbereich, in dem eine Variable oder ein Klassenobjekt gespeichert ist), stellt man damit sicher, dass das Programm dieses Objekt nicht modifiziert. Eine Const-Definition muss einen passenden Initialisierer beinhalten. Listing A enthält verschiedene Instanzen von Const-Objekten.

Const-Pointers
Die Deklaration eines Pointers als const stellt sicher, dass der Programmierer diesem Pointer im Nachhinein keine neue Adresse zuweisen kann. Wie in Listing B gezeigt, ist das an diesen Pointer gebundene Objekt auch weiterhin modifizierbar.

Const-Member-Functions
Der Zustand eines Klassenobjekts besteht aus den Werten seiner nicht statischen Datenelemente. Eine Elementfunktion (Member Function), die den Zustand ihres Objekts nicht verändert, sollte als const deklariert werden. Dies wird gemacht, indem man nach der Parameterliste const anfügt. Zum Beispiel:

Man muss erkennen, dass Const-Elementfunktionen ein bedeutender Bestandteil der Sprache ‚Design by Contract‘ sind: Sie gewährleisten, dass das, was der Programmierer vorhat (z.B. den Zustand des Objekts unverändert zu erhalten), vom Compiler durchgesetzt wird. Der Versuch, ein Datenelement von innerhalb eines Const-Elements zu modifizieren, ruft einen Kompilierungsfehler hervor:

Zusätzlich dokumentiert die Konstante das Verhalten der Funktion.

Page: 1 2 3 4

ZDNet.de Redaktion

Recent Posts

Google schließt kritische Sicherheitslücke in Android 14

Weitere schwerwiegende Fehler stecken in Android 12 und 13. Insgesamt bringt der Mai-Patchday 29 Fixes.

15 Stunden ago

IT Sicherheit: digitale Angriffe sicher abwehren

IT-Sicherheit - Erkennen und Abwehren von digitalen Angriffen

20 Stunden ago

Bestverkaufte Smartphones: Apple und Samsung dominieren

Das iPhone 15 Pro Max ist das meistverkaufte Smartphone im ersten Quartal. Das Galaxy S24…

23 Stunden ago

Google: Passkeys schützen mehr als 400 Millionen Google-Konten

Die Passwort-Alternative Passkeys überholt Einmalpasswörter bei der Zwei-Faktor-Authentifizierung. Auch Microsoft setzt sich aktiv für die…

2 Tagen ago

Infostealer: 53 Prozent der Angriffe treffen Unternehmensrechner

Der Anteil steigt seit 2020 um 34 Prozentpunkte. Allein 2023 erfasst Kaspersky rund 10 Millionen…

2 Tagen ago

Salesforce: Mit Einstein GPT zurück auf die Überholspur?

Salesforce forciert den Ausbau seiner Industry Clouds. Mit ihrem Prozesswissen könnten deutsche IT-Dienstleister davon profitieren.

3 Tagen ago