Sequenz ,
Der Sequenz-Operator wertet mehrere Ausdrücke sequentiell hintereinander aus wobei alle Ausdrücke zusammen als eine einzige Anweisung gelten. Dieser Operator wird fast auschliesslich nur bei for-Loops verwendet.
|
|
Siehe auch for-Loop
Details
Der Sequenz-Operator erwartet zwei Operanden und wird von links nach rechts abgearbeitet. Während in C beide Operanden rvalues bezeichnen, können in C++ beide Operanden rvalues oder lvalues sein. Der Rückgabewert ist in C ein rvalue: Der Wert des zweiten Operanden. In C++ ist der Rückgabewert entsprechend dem zweiten Operanden entweder ein rvalue oder ein lvalue.
Der Sequenz-Operator wird äusserst selten gebraucht. Er wird jedoch verwendet, um mehrere Anweisungen als eine einzige Anweisung gelten zu lassen, was insbesondere bei gewissen Konstrukten mit dem for-Loop nützlich sein kann, da ein for-Loop nur eine einzelne Anweisung für die Startanweisung und die Statusänderung zulässt. Weitere Informationen darüber findet man beim for-Loop.
Von einem anderweitigen Gebrauch des Sequenz-Operators ist abzuraten, da zum einen der Code unleserlich wird, zum anderen der Compiler die üblichen Optimierungen auf die Ausdrücke nicht mehr anwenden kann.
Es ist zu bemerken, dass Kommas , im Code eher zu Parameter- oder Argumentenlisten, Aggregats-Zuweisungen oder Member-Initialisierungen gehören, welche jedoch explizit nichts mit dem Sequenz-Operator zu tun haben.
Überladen des Operators
Der Sequenz-Operator hat grundsätzlich die semantische Bedeutung der sequentiellen Abarbeitung von Ausdrücken, jedoch steht dem Programmierer frei, mittels einer Überladung des Operators beliebige semantische Bedeutungen zu definieren. Es ist jedoch davon abzuraten, da die ohnehin schon seltene Verwendung des Sequenz-Operators den Programmierer durch eine zusätzliche Überladung mit unbekannter Semantik vollständig verwirrt. Dennoch hier die üblichen Kommentare zur Operatorenüberladung:
Die Prototypen für das Überladen des Sequenz-Operators sind die folgenden (Einschränkungen und Erläuterungen siehe Überladen von Operatoren):
|
|
Im folgenden Beispiel wird eine Klasse für ein Listen-Element präsentiert. Der überladene Sequenz-Operator fügt einzelne Elemente zusammen.
|
|