
10-02-2009, 09:08
|
|
|
|
חבר מתאריך: 22.08.08
הודעות: 310
|
|
בתגובה להודעה מספר 1 שנכתבה על ידי karel_or שמתחילה ב "שאלה בקשר לפולימורפיזם ב C#(פונקציות וירטואליות)"
virtual בא לפתור בעיות של ירושה.
לדוגמא, אתה רוצה להכין מערך שיכיל את כל האובייקטים בתוכנית שלך - מן הסתם תרצה להשתמש בכמה classes שיורשים איזשהוא class מרכזי, וכל אובייקט שאתה מוסיף לרשימה יהיה אחד מהם.
אבל מה, מערך יכול להכיל רק סוג אחד של משתנים, אז מה שעושים זה להוסיף מצביע של הclass המרכזי, שיצביע לאובייקט שיורש אותו.
רק שעד עכשיו עדיין יש בעיה.
עם השתמשת פעם במצביעים לclasses יורשים, בטח שמת לב שלמעשה אין לך שום גישה לדברים ששייכים ליורש. למעשה יש לך את הבסיס עם שם של היורש, אז לא הרווחת כלום.
פה נכנס virtual - הוא "ממפה" לך קריאות לפונקציות של היורש, במידה ויש לו אותם.
ספסיפית לדוגמא שלך - עם תכין מצביע של הclass הראשון שיצביע ליורש, במקרה הראשון עם תקרא לprint אז יופיע על הצג derived class ובמקרה השני יופיע base class.
|