הורשה ב ++c.

oren2110

New member
הורשה ב ++c.

שלום, בהורשה ב ++c, האם אפשר להתייחס אל מצביע למחלקת הבסיס כמצביע אל מחלקת הבן (מעין casting), או שזה בדיוק הפוך ? תודה רבה.
 

ברנדל

New member
זה לא הפוך

זה איך שאמרת עם מגבלות כמובן. מצביע בסיס יכול להצביע על מצביע בן. אבל אז אם תפנה לאחת מהפונקציות שמוגדרות בשני ה class תקבל את זאת של הבסיס אלא אם כן מדובר בפונקצייה וירטואלית. לכן השימוש העיקרי הוא בשימוש בפולימרפיזם. עכשיו שים לב. מותר לך גם לקחת מצביע בן ולהצביע איתו על אב. המגבלה כאן היא שמצביע האב המביע קודם לכן על הבן. כלומר נעשה תהליך בן -> אב -> בן
 

gilad_no

New member
C++

אתה תמיד יכול להתייחס לאב (ישיר או קדמון) של אובייקט ללא שום CAST. רק אם אתה רוצה להוציא בן מתוך אב, תצטרך CAST מפורש. ההיגיון מאחורי זה: אובייקט יודע בדיוק ממי הוא יורש, ולכן אין בעיה להתייחס לאחד האבות שלו. לעומת זאת, אובייקט לא יכול לדעת אילו אובייקטים יירשו אותו בעתיד, ולכן הוא חייב CAST מפורש אליהם.
 

ברנדל

New member
למרות גלעד,

שנדמה לי שגם כאן ה cast זה רק למניעת warnings. נדמה לי שאין error. בכל מקרה גם עם cast אסור להמיר מצביע אב למצביע בן אלא אם כן מצביע האב הצביע קודם לכן על הבן. אני לא זוכר אם זו שגיאת קומפילציה או סתם התוכנה עלולה לעוף
 

gilad_no

New member
זה לא רק לאזהרות

המהדר פשוט לא ייתן לך לבצע השמה (ולכן חייבים CAST).
 
למעלה