Bitweise XOR-Zuweisung ^=Der Bitweise-XOR-Zuweisungs-Operator verknüpft den Wert, der rechts des Operators steht mit dem Wert der links des Operator stehenden Variablen mittels dem bitweisen-XOR-Operator und speichert das Resultat zurück in die Variable.
Siehe auch Zuweisungs-Operator =, Bitweise-XOR-Operator ^ DetailsDer Bitweise-XOR-Zuweisungs-Operator erwartet links einen lvalue und rechts einen rvalue und wird von rechts nach links abgearbeitet. Der Rückgabewert ist in C ein rvalue: Der Wert des linken Operanden nach der Zuweisung. in C++ ist der Rückgabewert ein lvalue: Der (mittlerweile zugewiesene) linke Operand selbst. Der Bitweise-XOR-Zuweisungs-Operator verhält sich genau gleich wie der Zuweisungsoperator, nur dass er eine zusätzliche XOR-Verknüpfung ausführt. Für Details über die Eigenschaften einer Bitweise-XOR-Zuweisung wird hier somit auf die Beschreibung des Zuweisungsoperators und des Bitweise-XOR-Operators verwiesen. Als zusätzliche Erläuterung des Bitweise-XOR-Zuweisungs-Operators im Bezug zum einfachen Zuweisungsoperator genügen folgende zwei Programmzeilen, welche absolut äquivalent sind:
Die gesetzten runden Klammern deuten an, dass aufgrund der Operatoren-Rangordnung bei der Bitweise-XOR-Zuweisung genauso wie bei allen Zuweisungs-Operatoren der komplette rechte Teil nach den Gleichheitszeichen als EIN Operand ausgewertet wird. Überladen des OperatorsDer Bitweise-XOR-Zuweisungs-Operator hat grundsätzlich die semantische Bedeutung einer bitweisen XOR-Verknüpfung mit einem Wert und anschliessender Zuweisung des Resultates zur Variablen. Allerdings steht es dem Programmierer frei, eine andere Semantik zu definieren. Da das Zeichen ^ in vielen Sprachen als Potenzierungs-Zeichen (Power-Operator) verwendet wird, würde sich die Ausprogrammierung einer Potenz-Funktion anbieten. in C und C++ wird eine solche Semantik jedoch nach allgemeinem Bewusstsein mit einer Funktion mit dem Namen Die Prototypen für das Überladen des Bitweise-XOR-Zuweisungs-Operators sind die folgenden (Einschränkungen und Erläuterungen siehe Überladen von Operatoren):
Man beachte, dass der Bitweise-XOR-Zuweisungs-Operator im Gegensatz zum einfachen Zuweisungs-Operator sowohl innerhalb als auch ausserhalb der Klasse überladen werden kann, obschon gewisse Quellen dies nicht erlauben. Es ist jedoch grundsätzlich zu empfehlen, Zuweisungs-Operatoren nicht ausserhalb der Klasse zu definieren. Da der Bitweise-XOR-Zuweisungs-Operator in C++ normalerweise einen lvalue zurückgibt, ist der Rückgabetyp der Überladung üblicherweise ein Referenz-Typ (&) der eigenen Klasse, wobei der Rückgabewert normalerweise mit Der Im folgenden Beispiel wird eine Klasse für einen fiktiven Prozess präsentiert. Der überladene Bitweise-XOR-Zuweisungs-Operator wechselt ein Flag (auf Englisch switching) für den Status des Prozesses.
|