OOP ב- ++C
יש כמה דברים שלא ברורים לי מכמה שיעורים אחרונים ב-OOP. אודה לכם אם תוכלו להסביר לי. 1) למה בדיוק צריך Copy Ctor? מה אמורים לעשות בו יוצא דופן (אם בכלל יש בו איזה קטע טריקי)? זה נדמה לי או שהוא נקרא בצורה אוטומטית מתישהו? 2) כאשר עושים overloading לאופרטור ´=´ אני מבין שיש משהו שאמורים לעשות כדי למנוע תעופה... משהו שקשור בהצבעות לאותו מקום... ולא לעשות סתם השמה בין כל מיני data members... אני לא יודע בדיוק מה ולמה. יש לכם מושג? הוא נקרא אוטומטית מתישהו או שנדמה לי? 3) למה כשאני עושה מחלקת אב שמחלקות אחרות יורשות ממנה אז ה-destructor תמיד חייב להיות virtual? איך זה משנה? 4) Polymorphism זה משהו שאני לא בטוח שאני מבין. מגדירים מחלקת אב עם פונקציות וירטואליות. אחרי זה מגדירים מחלקות בנות של המחלקה הזו, שיורשות ממנה ושם מממשים את הפונקציות הוירטואליות האלה. בתוכנית הראשית מה שעושים זה להגדיר פוינטר למחלקת האב ואובייקטים מטיפוס המחלקות הבנות ואז אם מתברר שצריך שהאובייקט של מחלקת האב יהיה ב"צורה" שונה אז משנים את ההצבעה של הפוינטר שיצביע על אחד האובייקטים מהמחלקות הבנות (עם ההסבה הדרושה למחלקת האב)? ופונקציות וירטואליות טהורות... זה אומר שאין לי משמעות לפונקציה הזו במחלקת האב אבל יש לה משמעות ומימוש שונה במחלקות הבנות אז אני מממש את זה רק במחלקות הבנות? 5) הבנתי גם שכדי להפעיל אופרטור ´=´ של מחלקה מסויימת שיורשים ממנה (אני חושב) אז צריך לקרוא לו מפורשות. משהו כמו לכתוב (operator=(paramater ולא להשתמש בו ישירות... אני לא בדיוק יודע מה ולמה... ולא ברור לי כ"כ על מה אני מדבר כאן... אולי למישהו אחר כן ברור והוא יכול להסביר לי? תודה מראש, IDD
יש כמה דברים שלא ברורים לי מכמה שיעורים אחרונים ב-OOP. אודה לכם אם תוכלו להסביר לי. 1) למה בדיוק צריך Copy Ctor? מה אמורים לעשות בו יוצא דופן (אם בכלל יש בו איזה קטע טריקי)? זה נדמה לי או שהוא נקרא בצורה אוטומטית מתישהו? 2) כאשר עושים overloading לאופרטור ´=´ אני מבין שיש משהו שאמורים לעשות כדי למנוע תעופה... משהו שקשור בהצבעות לאותו מקום... ולא לעשות סתם השמה בין כל מיני data members... אני לא יודע בדיוק מה ולמה. יש לכם מושג? הוא נקרא אוטומטית מתישהו או שנדמה לי? 3) למה כשאני עושה מחלקת אב שמחלקות אחרות יורשות ממנה אז ה-destructor תמיד חייב להיות virtual? איך זה משנה? 4) Polymorphism זה משהו שאני לא בטוח שאני מבין. מגדירים מחלקת אב עם פונקציות וירטואליות. אחרי זה מגדירים מחלקות בנות של המחלקה הזו, שיורשות ממנה ושם מממשים את הפונקציות הוירטואליות האלה. בתוכנית הראשית מה שעושים זה להגדיר פוינטר למחלקת האב ואובייקטים מטיפוס המחלקות הבנות ואז אם מתברר שצריך שהאובייקט של מחלקת האב יהיה ב"צורה" שונה אז משנים את ההצבעה של הפוינטר שיצביע על אחד האובייקטים מהמחלקות הבנות (עם ההסבה הדרושה למחלקת האב)? ופונקציות וירטואליות טהורות... זה אומר שאין לי משמעות לפונקציה הזו במחלקת האב אבל יש לה משמעות ומימוש שונה במחלקות הבנות אז אני מממש את זה רק במחלקות הבנות? 5) הבנתי גם שכדי להפעיל אופרטור ´=´ של מחלקה מסויימת שיורשים ממנה (אני חושב) אז צריך לקרוא לו מפורשות. משהו כמו לכתוב (operator=(paramater ולא להשתמש בו ישירות... אני לא בדיוק יודע מה ולמה... ולא ברור לי כ"כ על מה אני מדבר כאן... אולי למישהו אחר כן ברור והוא יכול להסביר לי? תודה מראש, IDD