C++: Ein Keyword für drei Konstrukte

„Operator const_cast<>“ entfernt die Const-Qualität eines Objekts. Wie wir in Kürze sehen werden, gibt es jedoch einige Einschränkungen für die Verwendung dieses Operators.

Die Entfernung des Const-Qualifiers
Obgleich const_cast<> den Cons-Qualifier eines Objekts entfernen kann, heißt dies nicht, dass man deshalb das daraus resultierende Objekt modifizieren könne. Sehen Sie sich das folgende Beispiel an:

Der Versuch, den String s zu überschreiben, wird zu einem undefinierten Verhalten führen. Das Problem liegt darin, dass Const-Objekte im Arbeitsspeicher des Systems gespeichert werden können. Eine Brute Force-Entfernung von const ermöglicht es, das Objekt so zu behandeln, als wäre es nicht const (z.B. seine Übergabe an eine Funktion, die char * annimmt), erlaubt aber nicht seine Modifizierung.

Die Umwandlung von non-const in const
Die meisten Programmierer sind sich nicht bewusst, dass const_cast<> auch die umgekehrte Operation durchführen kann, nämlich die Konvertierung eines Non-Const-Objekts in ein Const-Objekt. Zum Beispiel:

Allerdings wird man eine solche Verwendung von const_cast<>h nur selten antreffen. Der Grund dafür ist, dass C++ in einem Kontext, der const erfordert, automatisch Umwandlungen von non-const in const durchführt. Daher braucht man const_cast<> niemals wirklich für diesen Zweck einzusetzen – es sei denn, man möchte seinen Code dokumentieren.

Schlussfolgerung

Die syntaktische Barriere führt häufig dazu, dass Programmierer die Verwendung von const aufgeben und damit die Qualität ihrer Programme beeinträchtigen, also schlechter lesbaren und schwerer zu wartenden Code produzieren. Zugegeben, der Unterschied zwischen Pointers auf Const-Objekte und Const-Pointers ist nicht so klar erkennbar, wie er sein könnte. Das gilt vor allem, wenn man mit komplexen Deklarationen zu tun hat. Eine Überprüfung der Position des Const-Qualifiers bezüglich des Sternchens sollte jedoch für Klarheit sorgen, und Const-Elementfunktionen sind durch ein „const“ nach der Parameterliste leicht erkennbar.

Page: 1 2 3 4

ZDNet.de Redaktion

Recent Posts

EU-Datenschützer kritisieren Facebooks „Zustimmung oder Bezahlung“-Modell

Ohne eine kostenlose Alternative, die ohne Zustimmung zur Verarbeitung personenbezogener Daten zu Werbezwecken auskommt, ist…

1 Woche ago

Europol meldet Zerschlagung der Phishing-as-a-Service-Plattform LabHost

LabHost gilt als einer der größten Phishing-Dienstleister weltweit. Die Ermittler verhaften 37 Verdächtige, darunter der…

1 Woche ago

DE-CIX Frankfurt bricht Schallmauer von 17 Terabit Datendurchsatz pro Sekunde

Neuer Datendurchsatz-Rekord an Europas größtem Internetknoten parallel zum Champions-League-Viertelfinale.

1 Woche ago

Samsungs neuer LPDDR5X-DRAM erreicht 10,7 Gbit/s

Die neuen Chips bieten bis zu 25 Prozent mehr Leistung. Samsung steigert auch die Energieeffizienz…

1 Woche ago

Cisco warnt vor massenhaften Brute-Force-Angriffen auf VPNs

Betroffen sind Lösungen von Cisco, Fortinet, SonicWall und anderen Anbietern. Die Hacker nehmen Konten mit…

1 Woche ago

Cybersicherheit in KMUs: Es herrscht oft Aufholbedarf

Immer häufiger müssen sich Betriebe gegen Online-Gefahren wehren. Vor allem in KMUs werden oft noch…

1 Woche ago