Bien qu'il existe un tel opérateur - **
en Python, je me demandais pourquoi Java et C ++ n'en ont pas non plus.
Il est facile d'en créer une pour les classes que vous définissez en C ++ avec surcharge d'opérateur (et je pense qu'une telle chose est également possible en Java), mais lorsque vous parlez de types primitifs tels que int, double et ainsi de suite, vous devrez utiliser la bibliothèque fonctionnent comme Math.power
(et doivent généralement lancer les deux pour doubler).
Alors - pourquoi ne pas définir un tel opérateur pour les types primitifs?
^
opérateur ne correspond pas à la priorité de l'exponentiation. Considérez l'expression a + b ^ c
. En mathématiques, l'exponentiation est effectuée en premier ( b ^ c
), puis la puissance résultante est ajoutée à a
. En C ++, l'addition est effectuée en premier ( a + b
) puis l' ^
opérateur est effectué avec c
. Donc, même si vous avez implémenté l' ^
opérateur pour signifier l'exponentiation, la priorité surprendra tout le monde.
^
est un XOR en C ++. Il est conseillé qu'un opérateur surchargé ne fasse pas la différence avec ce qu'un type de données primitif fait en l'utilisant.
++
opérateur ou l' !
opérateur et. Al. pour signifier l'exponentation. Mais vous ne pouvez pas de toute façon, car les opérateurs dont vous parlez n'acceptent qu'un seul argument; l'exponentiation nécessite deux arguments.