Multiplikation *
Der Multiplikations-Operator führt eine Multiplikation zweier Elemente aus. Für arithmetische Typen entspricht dies der mathematischen Multiplikation zweier Zahlen.
|
|
Siehe auch Divisions-Operator /
Details
Der Multiplikations-Operator erwartet zwei Operanden als rvalues und wird von links nach rechts abgearbeitet. Der Rückgabewert ist ein rvalue, dessen Typ grundsätzlich durch die arithmetische Umwandlung der beiden Operanden festgelegt ist.
Der Operator ist zulässig für arithmetische (Integer- und Fliesskomma-) Typen sowie den bool-Typ. Boolsche Werte werden als Integer-Werte aufgefasst. Die Operanden werden gegebenfalls entsprechend den Regeln der arithmetischen Umwandlung gecastet.
Der Multiplikations-Operator entspricht bei arithmetischen Typen grundsätzlich der mathematischen Multiplikation, wobei man die beiden Operanden auch Faktoren nennt. Aufgrund der Rangordnung der Operatoren ist es möglich, einen Positiv- oder Negativ-Operator bei den beiden Faktoren direkt hinzuschreiben.
|
|
Der Multiplikations-Operator entspricht der direkten Umsetzung des entsprechenden Multiplikations-Befehls in Assembler und kann somit für arithmetische Typen einen Over- oder Underflow ergeben, was bei Integer-Typen zu einem Wrap-Around führt. Bei Fliesskomma-Typen kann dies zum Wert Unendlich
führen.
|
|
Überladen des Operators
Der Multiplikations-Operator hat grundsätzlich die semantische Bedeutung einer Multiplikation im mathematischem Sinne. Allerdings gibt es Klassen, die eine andere Semantik definieren, beispielsweise die Multiplikation zweier Mengen, was in einem sogenannten Power-Set
resultiert. Auch weitere, ähnliche Anwendungen des Multiplikations-Operators wären denkbar.
Die Prototypen für das Überladen des Multiplikations-Operators sind die folgenden (Einschränkungen und Erläuterungen siehe Überladen von Operatoren):
|
|
Vorsicht ist geboten bei dem nicht-const Prototypen innerhalb der Klasse: Wenn er ausserhalb der Klasse steht, wird er von den Compilern nicht als Fehler erkannt, da er einem Prototypen des Dereferenz-Operators entspricht.
Im folgenden Beispiel wird eine Klasse präsentiert für eine 2x2 Matrix. Der überladene Multiplikations-Operator definiert hier die Multiplikation zweier Matrizen.
|
|