Skip to main content

ฟังก์ชั่นโอเวอร์โหลดคืออะไร?

ฟังก์ชั่นการโอเวอร์โหลดเป็นคุณสมบัติของภาษาการเขียนโปรแกรมจำนวนมากที่สามารถสร้างหลายวิธีด้วยชื่อเดียวกัน แต่มีพารามิเตอร์อินพุตที่แตกต่างกันหรือประเภทการส่งคืนนี่เป็นคุณสมบัติทั่วไปในการเขียนโปรแกรมเชิงวัตถุตัวสร้างโดยเฉพาะอย่างยิ่งอาจมีตัวแปรเกินพิกัดที่แตกต่างกันหลายรายการโดยพื้นฐานแล้วฟังก์ชั่นการโอเวอร์โหลดมีประโยชน์เมื่อสองฟังก์ชั่นทำสิ่งที่คล้ายกันมากและสามารถใช้อินพุตหลายประเภทเพื่อทำเช่นนั้นตัวสร้างสามารถมากเกินไปได้อย่างง่ายดายเพราะไม่มีประเภทการส่งคืนที่ระบุไว้อย่างชัดเจนดังนั้นเพียงแค่เปลี่ยนพารามิเตอร์อินพุตของตัวสร้างจะถูกโอเวอร์โหลดที่ถูกต้อง

วิธีแรกที่ฟังก์ชันสามารถล้นได้คือการเปลี่ยนพารามิเตอร์อินพุตตัวอย่างเช่นหนึ่งสามารถพิจารณาฟังก์ชั่นที่เรียกว่า Add ที่ใช้เป็นอินพุตสองตัวเลขทั้งหมดจุดประสงค์ของฟังก์ชั่นนี้ค่อนข้างชัดเจนมันหมายถึงการหาผลรวมของตัวเลขทั้งหมดสองตัว

หากต้องการค้นหาผลรวมของสองลอยหรือตัวเลขทศนิยมอย่างไรก็ตามฟังก์ชั่นนี้จะไม่สามารถใช้ได้ดังนั้นฟังก์ชั่นที่โอเวอร์โหลดครั้งที่สองจะต้องกำหนดเป็นฟังก์ชั่นที่เรียกว่า ADD ที่ใช้เป็นอินพุตสองลอยฟังก์ชั่นทำสิ่งเดียวกันเป็นหลัก แต่การใช้ฟังก์ชั่นการโอเวอร์โหลดเป็นสิ่งจำเป็นเนื่องจากอินพุตของพวกเขาแตกต่างกันอย่างมีนัยสำคัญ

วิธีที่สองที่ฟังก์ชั่นสามารถโอเวอร์โหลดได้คือการเปลี่ยนทั้งพารามิเตอร์อินพุตและประเภทการส่งคืนการใช้ตัวอย่างก่อนหน้านี้สามารถพิจารณาได้ว่าฟังก์ชั่นเพิ่มมากเกินไปทั้งคู่มีประเภทการส่งคืนโมฆะหรือไม่นั่นคือพวกเขากลับมาไม่มีอะไรนี่จะยังคงเป็นฟังก์ชั่นที่ถูกต้องมากเกินไป แต่ประเภทการส่งคืนของทั้งสองวิธีอาจเปลี่ยนแปลงได้เช่นกันในอินสแตนซ์ที่ถูกต้องอีกครั้งของการโอเวอร์โหลดฟังก์ชัน ADD ที่ใช้ตัวเลขทั้งหมดสองตัวสามารถส่งคืนผลรวมจำนวนทั้งหมดนั้นและฟังก์ชัน ADD ที่ใช้ตัวเลขทศนิยมสองตัวสามารถส่งคืนผลรวมตัวเลขทศนิยมนั้น

เพียงแค่เปลี่ยนประเภทการส่งคืนของฟังก์ชันอย่างไรก็ตามอย่างไรก็ตามไม่ถือว่าเป็นฟังก์ชั่นที่ถูกต้องมากเกินไปการเปลี่ยนเฉพาะประเภทการส่งคืนของฟังก์ชั่นส่งผลให้เกิดความคลุมเครือเพราะมันไม่ชัดเจนจากลายเซ็นวิธีการที่ต้องการประเภทการส่งคืนพารามิเตอร์สามารถกำหนดได้อย่างคลุมเครือดังนั้นจึงเป็นสิ่งสำคัญมากสำหรับฟังก์ชั่นที่โอเวอร์โหลดที่จะเรียกอย่างถูกต้องตัวอย่างเช่นหากมีฟังก์ชั่นโอเวอร์โหลดที่มีจำนวนทั้งหมดเป็นพารามิเตอร์อินพุตและอีกอย่างหนึ่งที่มีหมายเลขทศนิยมเป็นพารามิเตอร์มันจะง่ายมากสำหรับใครบางคนที่จะเรียกฟังก์ชันหมายเลขทศนิยมแทนฟังก์ชันตัวเลขทั้งหมดโดยไม่ได้ตั้งใจหรือในทางกลับกันเพราะพวกเขามีชื่อเดียวกันพารามิเตอร์ที่คลุมเครือเช่นสิ่งเหล่านี้ควรหลีกเลี่ยงหากเป็นไปได้และหากไม่สามารถทำได้ควรใช้ความระมัดระวังอย่างยิ่งและให้รหัสมีความยืดหยุ่นมากการพิจารณาขั้นสุดท้ายเกี่ยวกับฟังก์ชั่นที่มากเกินไปคือการแสดงความคิดเห็นที่เพียงพอเป็นสิ่งจำเป็นแม้ว่ามันอาจจะชัดเจนโดยพารามิเตอร์อินพุตที่แตกต่างกันว่าฟังก์ชั่นโอเวอร์โหลดเวอร์ชันใดที่เหมาะสมสำหรับสถานการณ์เฉพาะ แต่ก็อาจไม่ชัดเจนว่าฟังก์ชั่นนั้นแตกต่างจากพันธมิตรที่มากเกินไปอื่น ๆ