דף הבית  שיעורים  הורשה וגישה  פונקציות וירטואליות - המשך
 
פונקציות וירטואליות - המשך
 
קיימת גם דרך לברר את סוג האובייקט בצורה ישירה, באמצעות האופרטור typeid.
האופרטור typeid בודק את סוג המחלקה של כל אובייקט, ומחזיר אובייקט מסוג typeinfo, עליו ניתן להפעיל את הפונקציה name, המחזירה את שם המחלקה ואת האופרטור ==, העונה לשאלה האם שני אובייקטים הם מאותה מחלקה. לדוגמא:

void main()
{
 Animal *a1;
 Animal *a2;
 a1 = new Cat;
 a2 = new Dog;
 if ( !(typeid(*a1)==typeid(*a2)) )
  printf("%s is different from %s",
   typeid(*a1).name(), typeid(*a2).name());
}
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

האופרטור typeid יחזיר תשובה גם עבור הטיפוסים הבסיסיים של השפה, כמו int ו-double.
זכור, בעת שימוש באופרטור typeid, לכלול את הספריה המתאימה - typeinfo.h.