Array-Element []Der Array-Element-Operator greift auf ein Element eines Arrays zu. Der Index des Arrays wird innerhalb von eckigen Klammern [] angegeben. Das Array, auf das zugegriffen werden soll, steht links davon.
Siehe auch Deklaration und Definition eines Arrays DetailsDer Array-Element-Operator erwartet einen Array-Operanden als lvalue und einen Index-Operanden als rvalue und wird von links nach rechts abgearbeitet. Der Rückgabewert ist ein lvalue. Der Array-Operand muss ein Array oder ein Pointer sein, der Index-Operand muss von integralem Typ sein. Als Array-Operand kann ein beliebiger Ausdruck stehen, der zu einem lvalue ausgewertet wird, welcher ein Array oder einen Pointer darstellt. Wenn der Array-Operand als const deklariert ist, so gilt dies auch für den Rückgabewert. Der Index-Operator muss von integralem Typ sein. Nach allgemeinem Bewusstsein sollte der Index zudem positiv, also grössergleich 0 sein, allerdings sind auch vorzeichenbehaftete Werte erlaubt ebenso wie Ausdrücke, welche zu Durch die Abarbeitungsrichtung von links nach rechts wird es möglich, mehrdimensionale Arrays durch direktes Anfügen von weiteren Array-Element-Operatoren anzusprechen:
Man achte bei diesem Beispiel auch auf die Der Array-Element-Operator wird in C und C++ als ein kommutativer Ausdruck gelesen. Dies bedeutet, er erwartet zwei Operanden, wobei einer davon innerhalb der eckigen Klammern stehen muss. Normalerweise und nach allgemeinem Bewusstsein steht innerhalb der eckigen Klammern der Index-Operator. Die Syntax von C und C++ allerdings erlaubt es, die beiden Operanden auch zu vertauschen. Die folgenden beiden Zeilen sind somit äquivalent, es wir jedoch stengstens angeraten, der üblichen Schreibweise zu folgen.
Überladen des OperatorsDer Array-Element-Operator hat grundsätzlich die semantische Bedeutung des Ansprechens eines Elementes mit gegebenem Index in einer Struktur. Dem Programmierer steht jedoch frei, eine andere Semantik zu definieren. Oftmals wird mittels der Überladung des Array-Element-Operators der gegebene Index auf Gültigkeit geprüft, sprich, es wird sichergestellt, dass der gegebene Index in der Struktur auch existiert. Die Prototypen für das Überladen des Array-Element-Operators sind die folgenden (Einschränkungen und Erläuterungen siehe Überladen von Operatoren):
Dieser Operator kann ausserhalb der Klasse NICHT überladen werden. Ausserdem ist es mit überladenen Array-Element-Operatoren nicht mehr möglich, den Array- und den Index-Operanden zu vertauschen. Im folgenden Beispiel wird eine Klasse präsentiert für einen RGB-Farbwert. Die Überladung des Array-Element-Operators-Operators gibt den Wert zurück, der zum gegebenen String passt.
|