אבי נימני8
New member
C++ and downcast
שאלה קטנה שמציקה לי.
שימו לב לקוד הבא (לא משנה כרגע מה עושה כל פונקציה):
Employee *e = dynamic_cast<Employee *>(p); // downcast delete p; cout << e->getPosition(); // Error because of 'delete p' return(0);}
אני מקבל שגיאה כשאני קורא ל-cout (לפני ה-return).
השגיאה לא מתרחשת כאשר אני מוחק את delete p.
למה זה קורה? אם ביצעתי downcast לתוך משתנה אחר, זה לא אמור היה להעתיק את הערכים מחדש? לפי מה שקורה פה, זה כאילו עדין מצביע למקום בזיכרון של p.
אשמח לקבל תשובה עניינית בנושא.
תודה
שאלה קטנה שמציקה לי.
שימו לב לקוד הבא (לא משנה כרגע מה עושה כל פונקציה):
int main() { Person *p = new Employee(123);Employee *e = dynamic_cast<Employee *>(p); // downcast delete p; cout << e->getPosition(); // Error because of 'delete p' return(0);}
אני מקבל שגיאה כשאני קורא ל-cout (לפני ה-return).
השגיאה לא מתרחשת כאשר אני מוחק את delete p.
למה זה קורה? אם ביצעתי downcast לתוך משתנה אחר, זה לא אמור היה להעתיק את הערכים מחדש? לפי מה שקורה פה, זה כאילו עדין מצביע למקום בזיכרון של p.
אשמח לקבל תשובה עניינית בנושא.
תודה