C++ and downcast

C++ and downcast

שאלה קטנה שמציקה לי.
שימו לב לקוד הבא (לא משנה כרגע מה עושה כל פונקציה):
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.
אשמח לקבל תשובה עניינית בנושא.
תודה
 

selalerer

New member
down cast של פויינטר או reference לא מבצע העתקה.

ב-runtime זה בסך הכל בודק שמותר לך לבצע את ה-cast ואם לא אז מחזיר null אם זה cast של pointer ואם של reference אז זורק exception.
&nbsp
&nbsp
 
למעלה