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.