Mentre esiste un tale operatore - **
in Python, mi chiedevo perché anche Java e C ++ non ne abbiano uno.
È facile crearne uno per le classi definite in C ++ con sovraccarico dell'operatore (e credo che ciò sia possibile anche in Java), ma quando si parla di tipi primitivi come int, double e così via, è necessario utilizzare la libreria funziona come Math.power
(e di solito deve lanciare entrambi per raddoppiare).
Quindi - perché non definire un tale operatore per i tipi primitivi?
^
dell'operatore non corrisponde alla precedenza dell'espiazione. Considera l'espressione a + b ^ c
. In matematica, l'esponenziazione viene eseguita per prima ( b ^ c
), quindi viene aggiunta la potenza risultante a
. In C ++, l'aggiunta viene eseguita per prima (a + b
) quindi l' ^
operatore viene eseguito con c
. Quindi, anche se hai implementato l' ^
operatore per indicare l'espiazione, la precedenza sorprenderà tutti.
^
è un XOR in C ++. Si consiglia che l'operatore sovraccarico non dovrebbe fare diversamente ciò che fa un tipo di dati primitivo che lo utilizza.
++
operatore o l' !
operatore et. al. per significare esponenziale. Ma non puoi comunque, perché gli operatori di cui parli accettano solo un argomento; l'espiazione richiede due argomenti.