Trong khi có toán tử như vậy - **
trong Python, tôi đã tự hỏi tại sao Java và C ++ không có cái đó.
Thật dễ dàng để tạo một lớp cho các lớp bạn định nghĩa trong C ++ với quá tải toán tử (và tôi tin điều đó cũng có thể có trong Java), nhưng khi nói về các kiểu nguyên thủy như int, double, v.v., bạn sẽ phải sử dụng thư viện chức năng như Math.power
(và thường phải đúc cả hai để tăng gấp đôi).
Vậy - tại sao không định nghĩa một toán tử như vậy cho các kiểu nguyên thủy?
^
toán tử không khớp với độ ưu tiên của lũy thừa. Hãy xem xét biểu thức a + b ^ c
. Trong toán học, phép lũy thừa được thực hiện trước tiên ( b ^ c
), sau đó công suất kết quả được thêm vào a
. Trong C ++, phép cộng được thực hiện trước ( a + b
) sau đó ^
toán tử được thực hiện với c
. Vì vậy, ngay cả khi bạn đã thực hiện ^
toán tử có nghĩa là lũy thừa, thì quyền ưu tiên sẽ làm mọi người ngạc nhiên.
^
là một XOR trong C ++. Chúng tôi khuyên rằng toán tử quá tải không nên làm gì khác với kiểu dữ liệu nguyên thủy sử dụng nó.
++
toán tử hoặc !
toán tử et. al. có nghĩa là lũy thừa. Nhưng dù sao bạn cũng không thể, bởi vì các toán tử mà bạn nói về chỉ chấp nhận một đối số; lũy thừa đòi hỏi hai đối số.