ככה:
1) נניח שיש לך מחלקה Animal וממנה יורשות 2 מחלקות:
Cow ו-Fox.
משתמש יוצר חיות שונות בתוכנה בזמן שימוש בה, וכולן מאוחסנות במערך של Animal.
 
אבל, בפונקציה מסוימת אתה צריך לדעת אם יש לך פרה או שועל בתא מסוים במערך.
איך תעשה את זה?
אתה מפעיל את typeid על האובייקט הרצוי, והוא נותן לך מידע אמתי על הטיפוס שלו.
מידע זה כולל את השם של המחלקה שממנה נוצר.
 
הנה דוגמת קוד:
http://en.cppreference.com/w/cpp/language/typeid
 
זה הצד השני של פולימורפיזם: ירושה מאפשרת לך לעלות לרמה "כללית" של טיפול במחלקות שונות, ו-typeid מאפשר לך לרדת חזרה לאבחנה פרטנית בין הסוגים.
 
2) serialization הוא תהליך של שמירה של אובייקטים בזיכרון לתוך אחסון לא נדיף.
נניח יש לך תוכנה של אנשי קשר.
בתוכה יש מחלקה של Person ששומרת את כל פרטי הקשר של אדם אחד.
 
המשתמש הזין את הפרטים, התוכנה יצרה אובייקט Person ומחזיקה אותו בזיכרון, אבל מה הלאה?
מה יקרה כשהמשתמש ירצה לצאת מהתוכנה או לכבות את המחשב?
 
כאן בדיוק נכנס עניין ה-serialization:
אתה כותב קוד שישמור את תוכן אובייקט Person לקובץ בדיסק בצורה כזו שבפעם הבאה שמשתמש נכנס לתוכנה שלך, הוא יוכל לשחזר את האובייקט במדויק ולראות את המידע.
 
יש כאן קאצ' קטן:
הרעיון האמתי מאחורי serialization הוא לשמור אובייקטים בצורה כזו ששחזור שלהם יהיה אוטומטי:
כלומר, התוכנה שלך לא ממש צריכה לדעת שהיא קוראת קובץ של אנשי קשר.
הקובץ כולל מידע הן על סוג האובייקט והן על שדות שלו, כך שקוד גינרי אחד יכול לשחזר מקובץ אובייקטים שונים בעלי מבנה שונה.