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

ออเปอเรเตอร์ที่ไม่สามารถโอเวอร์โหลดได้ใน C++


ใน C++ เราสามารถโอเวอร์โหลดออเปอเรเตอร์บางตัวเช่น +, -, [], -> ได้ แต่ไม่สามารถโอเวอร์โหลดออเปอเรเตอร์บางตัวได้ ออเปอเรเตอร์ที่ไม่สามารถโอเวอร์โหลดได้มีดังนี้

  • "." Member access หรือ dot operator
  • "? :" Ternary หรือ conditional operator
  • "::" Scope resolution operator
  • ".*" Pointer to member operator
  • "sizeof" Object size operator
  • "typeid" Object type operator

ออเปอเรเตอร์เหล่านี้ไม่สามารถโอเวอร์โหลดได้ เพราะถ้าเราโอเวอร์โหลดมัน จะทำให้เกิดปัญหาการเขียนโปรแกรมที่ร้ายแรง

ตัวอย่างเช่น ออเปอเรเตอร์ sizeof คืนค่าขนาดของออบเจกต์หรือชนิดข้อมูลเป็นออเปอรันด์ นี่ถูกประเมินโดยคอมไพเลอร์ ไม่สามารถประเมินได้ในรันไทม์ (runtime) ดังนั้นเราจึงไม่สามารถโอเวอร์โหลดมันได้