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

ความแตกต่างระหว่าง Function Overloading และ Overriding ใน C++

ในบทความนี้ เราจะทำความเข้าใจความแตกต่างระหว่าง function overloading และ function overriding ใน C++

Overloading (การโอเวอร์โหลด)

  • ไม่มีคีย์เวิร์ดใดๆ ถูกใช้ระหว่างการ overload
  • โปรโตไทป์แตกต่างกันเฉพาะจำนวนหรือประเภทของพารามิเตอร์
  • เกิดขึ้นในขณะคอมไพล์ (compile time)
  • Constructor สามารถ overload ได้
  • Destructor ไม่สามารถ overload ได้
  • สามารถใช้เพื่อให้เกิด early binding
  • เวอร์ชันของฟังก์ชันที่ถูกเรียกจะถูกกำหนดโดยจำนวนหรือประเภทของพารามิเตอร์ที่ใช้
  • ฟังก์ชันจะถูกนิยามใหม่ด้วยชื่อเดียวกัน แต่จำนวนหรือประเภทพารามิเตอร์ต่างกัน

Overriding (การโอเวอร์ไรด์)

  • โปรโตไทป์คงที่ตลอด
  • เกิดขึ้นในขณะรันไทม์ (runtime)
  • Virtual functions ไม่สามารถ override ได้ (หมายเหตุ: ควรเป็น Virtual functions *can* be overridden)
  • Destructor สามารถ override ได้
  • Overriding ยังเรียกว่า late binding
  • ฟังก์ชันที่จะถูก override จะนำหน้าด้วยคีย์เวิร์ด 'virtual' ในคลาสฐาน
  • ที่อยู่ของอ็อบเจกต์ของคลาสจะถูกมอบหมายให้พอยน์เตอร์ซึ่งฟังก์ชันถูกเรียกโดยพอยน์เตอร์
  • เมื่อนิยามฟังก์ชัน จะนำหน้าด้วยคีย์เวิร์ด 'virtual' ในคลาสหลัก
  • ฟังก์ชันเดียวกันจะถูกนิยามใหม่ในคลาสลูกโดยใช้คีย์เวิร์ด 'override' (แก้จาก 'out')