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


