ในขณะที่มีโอเปอเรเตอร์ดังกล่าว - **
ใน Python ฉันสงสัยว่าทำไม Java และ C ++ จึงไม่มีตัวนี้เช่นกัน
มันง่ายที่จะสร้างคลาสที่คุณกำหนดใน C ++ พร้อมกับโอเปอเรเตอร์การบรรทุกเกินพิกัด (และฉันเชื่อว่ามันเป็นไปได้ใน Java) แต่เมื่อพูดถึงประเภทดั้งเดิมเช่น int, double และอื่น ๆ คุณจะต้องใช้ไลบรารี่ ฟังก์ชั่นเช่นMath.power
(และมักจะต้องร่ายทั้งสองครั้ง)
ดังนั้น - ทำไมไม่กำหนดผู้ประกอบการดังกล่าวสำหรับประเภทดั้งเดิม?
^
ผู้ประกอบการไม่ตรงกับความสำคัญของการยกกำลัง a + b ^ c
พิจารณาการแสดงออก ในวิชาคณิตศาสตร์การยกกำลังจะดำเนินการเป็นอันดับแรก ( b ^ c
) จากนั้นจะเพิ่มกำลังที่a
ได้ ใน C ++ นอกจากนี้จะดำเนินการเป็นครั้งแรก ( a + b
) จากนั้นผู้ประกอบการจะดำเนินการกับ^
c
ดังนั้นแม้ว่าคุณจะใช้งาน^
โอเปอเรเตอร์เพื่อหมายถึงการยกกำลัง แต่ความสำคัญก็จะทำให้ทุกคนประหลาดใจ
^
เป็น XOR ใน C ++ ขอแนะนำว่าตัวดำเนินการที่โอเวอร์โหลดไม่ควรแตกต่างจากชนิดข้อมูลดั้งเดิมที่ใช้
++
ผู้ปฏิบัติงานหรือ!
ผู้ปฏิบัติงานเป็นต้น อัล หมายถึงการยกกำลัง แต่คุณทำไม่ได้เพราะผู้ดำเนินการที่คุณพูดคุยยอมรับเพียงข้อโต้แย้งเดียว การยกกำลังต้องการสองอาร์กิวเมนต์