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

Umfrage: Angestellte in Deutschland unterschätzen NIS-2-Richtlinie

Fast zwei Drittel halten jedoch eine Umsetzung aller Vorgaben von NIS 2 bis Jahresende für…

33 Minuten ago

Kostenloser Dekryptor für ShrinkLocker

Mit dem Dekryptor von Bitdefender können Opfer von Attacken mit der Shrinklocker-Ransomware Dateien wiederherstellen.

15 Stunden ago

Malwarebytes warnt vor Betrugsmaschen beim Weihnachtseinkauf

In der Vorweihnachtszeit ist vor allem Malvertising auf dem Vormarsch. Cyberkriminelle locken Nutzer über schädliche…

15 Stunden ago

Bedrohungsindex: Deutliche Zunahme von Infostealern im Oktober

Dazu trägt unter der Infostealer Lumma-Stealer bei. Hierzulande dominiert der Infostealer Formbook die Malware-Landschaft.

1 Tag ago

Chrome 131 schließt zwölf Sicherheitslücken

Eine schwerwiegende Anfälligkeit hebelt die Sicherheitsfunktion Seitenisolierung auf. Betroffen sind Chrome für Windows, macOS und…

1 Tag ago

DeepL Voice mit KI für Sprach- übersetzungen

DeepL Voice ermöglicht Live‑Übersetzung von Meetings und Gesprächen in 13 Sprachen.

1 Tag ago