Overloading

unexpected

New member
Overloading

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

voguemaster

New member
"דוגמאות"

הדוגמא הכי בסיסית ל-overloading היא העמסת קונסטרקטורים. אם הגדרת מחלקה כלשהי ויש לה קונסטרקטור ברירת מחדל שלא מקבל שום פרמטר אלא יוצר אובייקט בתול, ופתאום בא לך ליצור (נניח והמחלקה היא מלבן) קונסטרקטור שמקבל את גודל המלבן והקואורדינטות שלו על המסך (נניח), אתה יכול להעמיס את הקונסטרקטור. כך יש לך שני קונסטרקטורים שכל אחד מהם בעל prototype אחר. כל אחד מאתחל אובייקט באופן אחר. דוגמא ל-overriding: נניח ומישהו כתב מחלקה של ספרייט עבור משחקי מחשב. במחלקת הבסיס יש מתודה שמציירת ספרייט פשוט מאוד רק בכדי שאפשר יהיה לבדוק שהכל עובד כמו שצריך. כשאתה יורש ממחלקת הספרייט שלנו, אתה רוצה לדרוס (override, נכון שאתה שונא מושגים כאלו בעברית ?) את השיטה שעושה RENDER למסך, כדי להציג את תוכן הספרייט עם כל האפקטים המתבקשים, ו/או מתודות אחרות שמאתחלות את תוכן הספרייט (כמו קריאת ה-BITMAP שמשמש בתור הגרפיקה של אותו הספרייט). זה מאוד נפוץ במיוחד עבור מחלקות שמייצגות אובייקטים בתלת מימד. שם אתה בד"כ דורס את השיטה שמבצעת RENDER כדי לבצע דברים מעניינים אחרים כמו קביעת תאורה ל-VERTICES וקביעת ה-TEXTURE הנוכחית, ועוד דברים מגניבים אחרים.. מקווה שמספיק מובן
 

odstudio

New member
הנה דוגמאות פשוטות

דוגמה ל- Overloading:
class CFoo{ public: void DoSomething(){}; void DoSomething(int x){}; //overloading of DoSomething. };​
דוגמה ל- Overriding:
class CFoo { public: virtual void DoSomething(){printf("Hello");} }; class CFooChild : public CFoo { public: void DoSomethinf(){printf("Goodbye");} //overridden };​
מקווה שזה מספיק. דרך-אגב, קיים עוד מושג - operator-overloading שכפי שאני הבנתי לא ביקשת דוגמה בשבילו.
 
למעלה