דף הבית שיעורים תוספות לא מונחות עצמים העמסת פונקציות
 
העמסת פונקציות
 
הנושא הראשון שבו נעסוק נקרא העמסת פונקציות (function overloading). הכוונה בכך היא לעובדה שיכולה להיות יותר מפונקציה אחת עם אותו השם.
נניח שיש שתי פונקציות המחזירות את מס' הזהות של עובד.הראשונה נקראת עם שם העובד, ואילו השניה עם מס' העובד.
כאשר תכנתנו ב-C, נתנו לפונקציות שונות, שמות שונים:

long FindIdByName(char *name);
long FindIdByNumber(int num);
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

ב-++C ניתן לעשות את אותו הדבר, אך גם ניתן לתת להן את אותו השם:

long FindId(char *name);
long FindId(int num);
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

כיצד המהדר יודע לאיזו פונקציה קראת אם לשתיהן אותו השם?
ובכן, הוא יודע לפי סוג הפרמטר אותו אתה מעביר לפונקציה. אם נקרא לפונקציה עם פרמטר שהוא מצביע ל-char, המהדר ישתמש בפונקציה הראשונה, ואם נקרא לה עם פרמטר שהוא מס' טבעי, הוא ישתמש בשנייה.

FindId("Sharon");
FindId(266);
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

כלומר, אם ברצונך לתת לשתי פונקציות את אותו השם, עליך לתת להן פרמטרים שונים.
הגדרת שתי פונקציות עם אותו השם ואותם פרמטרים אינה חוקית. אפילו אם הערך המוחזר הינו שונה:

char Avg(int groupNum);
long Avg(int val);
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

חלק מהפרמטרים יכולים להיות זהים, כל זמן שקיים לפחות פרמטר אחד שונה המבדיל בינהן:

long Avg(int num, float seed);
long Avg(int num, int seed);
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

וגם הגדרת פונקציות בעלות אותם פרמטרים בסדר שונה, גם היא תקינה:

long Avg(int num, char seed);
long Avg(char root, int val);
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט