Chociaż istnieje taki operator - **w Pythonie zastanawiałem się, dlaczego Java i C ++ też go nie mają.
Łatwo jest utworzyć jedną dla klas, które definiujesz w C ++ z przeciążeniem operatora (i uważam, że takie rzeczy są możliwe również w Javie), ale mówiąc o prymitywnych typach, takich jak int, double i tak dalej, będziesz musiał użyć biblioteki działają jak Math.power(i zwykle muszą rzutować oba na podwójne).
Dlaczego więc nie zdefiniować takiego operatora dla typów pierwotnych?
^operatora nie jest zgodny z priorytetem potęgowania. Rozważ wyrażenie a + b ^ c. W matematyce najpierw potęguje się potęgowanie ( b ^ c), a następnie dodaje się wynikową moc a. W C ++ dodawanie odbywa się najpierw ( a + b), a następnie za pomocą ^operatora c. Więc nawet jeśli zaimplementowałeś ^operatora jako potęgowanie, pierwszeństwo zaskoczy wszystkich.
^jest XOR w C ++. Zaleca się, aby przeciążony operator nie robił inaczej, niż robi to prymitywny typ danych.
++operatora lub !operatora et. glin. znaczy potęgowanie. Ale i tak nie możesz, ponieważ operatorzy, o których mówisz, akceptują tylko jeden argument; potęgowanie wymaga dwóch argumentów.