C++/פונקציות: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
בונגולים (שיחה | תרומות)
בונגולים (שיחה | תרומות)
אין תקציר עריכה
שורה 1:
{{cC++}}
==מהי העמסת פונקציות?==
העמסת פונקציות היא יצירה של יותר מפונקציה אחת עם אותו שם, כאשר הן נבדלות זו מזו ע"י רשימת הפרמטרים שלהן.<br /> יש צורך באלמנט זה בכדי ליצור פונקציה אחת (בעצם כמה, בעלות שם זהה) שהיא רב שימושית, הוי אומר שלמשל פונקציה שמחזירה את הגדול מבין שני מספרים שמתקבלים כפרמטרים תהיה מתאימה למספר טיפוסי נתונים.<br /> למשל: היא תוכל לחשב את התוצאה גם עם יתקבלו משתנים מטיפוס int וגם עם מטיפוס double, ואפשר כמובן שיהיה שוני בין שני החישובים.
שורה 32:
אפשר גם לשנות את אחת הפונקציות, למקרה שנרצה לעשות חישוב שונה לdouble ולint.
===המרה ובעיות אפשריות===
עם למשל נקרא לפונקציה sum() שיצרנו קודם עם שני פרמטרים מסוג שונה מהמוזכרים בקוד, יתרחש מיד ניסיון המרה של המהדר. במקרה שלנו, עם נקרא לפונקציה עם פרמטרים מסוג float, המהדר ימיר אותם לdouble ותקרא הגירסא השניה של sum().
כמובן שכזאת המרה עלולה שלא להצליח, עם למשל מדובר במצביע שנשלח לפונקציה sum(), אז המהדר יתן הודעת שגיאה.
עניין חשוב יותר הוא המצב הבא:<br />
עם לפונקציה שלנו למשל, נשלחים שני פרמטרים שונים, אחד double והשני int, איזו גירסה תיקרא?<br />