Embora exista esse operador - **em Python, eu queria saber por que Java e C ++ não têm um também.
É fácil criar um para as classes que você define em C ++ com sobrecarga de operador (e acredito que isso também é possível em Java), mas ao falar sobre tipos primitivos, como int, double e assim por diante, você terá que usar a biblioteca funcionam como Math.power(e geralmente têm que converter os dois para dobrar).
Então - por que não definir esse operador para tipos primitivos?
^operador não corresponde à precedência da exponenciação. Considere a expressão a + b ^ c. Em matemática, a exponenciação é realizada primeiro ( b ^ c), depois a potência resultante é adicionada a a. No C ++, a adição é realizada primeiro ( a + b) e depois o ^operador é executado com c. Portanto, mesmo se você implementou o ^operador para significar exponenciação, a precedência surpreenderá a todos.
^é um XOR em C ++. É recomendável que o operador sobrecarregado não faça diferente do que um tipo de dados primitivo faz usando-o.
++operador ou o !operador et. al. significar exponenciação. Mas você não pode, de qualquer maneira, porque os operadores sobre os quais você fala aceitam apenas um argumento; exponenciação requer dois argumentos.