Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

กฎการโอเวอร์โหลดออเปอเรเตอร์ (Operator Overloading) ใน C++


ใน C++ รองรับคอมไพล์ไทม์โพลีมอร์ฟิซึม (compile time polymorphism) ตัวอย่างของคอมไพล์ไทม์โพลีมอร์ฟิซึมคือ การโอเวอร์โหลดฟังก์ชัน (function overloading) และการโอเวอร์โหลดออเปอเรเตอร์ (operator overloading)

มีกฎบางอย่างสำหรับการโอเวอร์โหลดออเปอเรเตอร์ กฎเหล่านี้คือ

  • สามารถโอเวอร์โหลดได้เฉพาะออเปอเรเตอร์ที่สร้างมาแล้ว (built-in operators) หากมีออเปอเรเตอร์บางตัวไม่มีใน C++ เราไม่สามารถโอเวอร์โหลดมันได้

  • ไม่สามารถเปลี่ยน arity (จำนวนออเปอรันด์) ของออเปอเรเตอร์ได้

  • ลำดับความสำคัญ (precedence) ของออเปอเรเตอร์ยังคงเดิม

  • ออเปอเรเตอร์ที่โอเวอร์โหลดแล้วไม่สามารถมีพารามิเตอร์เริ่มต้น (default parameters) ได้ ยกเว้นออเปอเรเตอร์การเรียกฟังก์ชัน "()"

  • ไม่สามารถโอเวอร์โหลดออเปอเรเตอร์สำหรับชนิดข้อมูลสร้าง込 (built-in data types) ต้องมีชนิดข้อมูลที่ผู้ใช้กำหนดเอง (user defined data types) อย่างน้อยหนึ่งตัว

  • ออเปอเรเตอร์กำหนดค่า "=", 下標 "[]", เรียกฟังก์ชัน "()", และลูกศร "->" ต้องถูกกำหนดเป็นฟังก์ชันสมาชิก (member functions) ไม่ใช่ friend functions

  • ออเปอเรเตอร์บางตัวเช่น การกำหนดค่า "=", ที่อยู่ "&", และจุลภาค "," ถูกโอเวอร์โหลดโดยค่าเริ่มต้นแล้ว