עבור לתוכן

|מונחה עצמים בC++| שאלה על UPCASTING ופולימורפיזם....

Featured Replies

פורסם

כשמתייחסים לכל מיני עצמים (שיורשים מאבא אחד) עם מצביע מטיפוס האבא , זה נקרא UPCASTING ?

עדיין יש אפשרות לגשת לפונקציה שקיימת אצל בן מסוים שאין אותה לאבא ? או רק לפונ' הוירטואליות של האבא ואז זה יפעיל לי בעזרת VTBL את של הבן ?

פורסם

כשמתייחסים לכל מיני עצמים (שיורשים מאבא אחד) עם מצביע מטיפוס האבא , זה נקרא UPCASTING ?

כן, בערך. upcasting זה פשוט המרה מהטיפוס של מצביע לבן למצביע לאב. אם יש לך קלאס בשם Base וקלאס בשם Derived שיורש ממנו, אז הפעולה הזו היא upcast

Derived* p = ...;
Base* q = p;

עדיין יש אפשרות לגשת לפונקציה שקיימת אצל בן מסוים שאין אותה לאבא ? או רק לפונ' הוירטואליות של האבא ואז זה יפעיל לי בעזרת VTBL את של הבן ?

סתם ככה אי אפשר (זה לא יתקמפל). אפשר באמצעות downcast (שזו בדיוק הפעולה הפוכה ל-upcast). בשביל להמיר באופן בטוח צריך להשתמש ב-dynamic_cast.

פורסם
  • מחבר

הבנתי תודה :xyxthumbs:

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים