דף הבית שיעורים תוספות לא מונחות עצמים
העמסת פונקציות - המשך
 
העמסת פונקציות - המשך
 
נשאלת השאלה, עד כמה שונים פרמטרים שונים צריכים להיות?
האם הטיפוסים long ו-float שונים מספיק לצורך העמסת פונקציות?
ובכן התשובה היא כן, כל עוד נימנע מדו משמעות בעת הקריאה לפונקציה. לדוגמא:

void Avg(float seed);
void Avg(long val);

Avg(1.23f);
Avg(9999999999L);
Avg(1);
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

הקריאה הראשונה לפונקציה היא תקינה, הפונקציה שתקרא היא הפונקציה הראשונה. גם הקריאה השניה לפונקציה היא תקינה, המהדר ישתמש בפונקציה השנייה.
לעומת זאת הקריאה השלישית אינה תקינה, המהדר יחזיר הודעת שגיאה (שגיאת ambiguity - דו-משמעות) מכיוון שהפרמטר המועבר הינו int, וניתן להמירו הן ל-float, והן ל-long.
ניתן לפתור בעיה זו פשוט ע"י ביצוע ההמרה לטיפוס הרצוי בעצמך, כמו כאן:

Avg((float)1);
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט