إيجاد فئة كائن في ++C

c

إيجاد فئة كائن

أحيانا ما نحتاج لبيان الفئة التي ينتمي إليها كائن ما . وقد تتعجب من احتمال أن ينسي مبرمج انتماء كائنات برنامجه , ولكن عجبك يزول حين تفكر في حالة مصفوفة من مؤشرات تشير لأنواع مختلفة من الكائنات , كما في برنامجنا virtpers.cpp الذي عرضناه في هذا الفصل . كيف نعرف أية فئة ينتمي إليها الكائن المشار إليه ؟

لحسن الحظ تحتوي الإصدارات الجديدة من السي ++ علي دالة تسمي typeid() تمكننا من الحصول علي هذه المعلومة , وتسمي هذه العملية run time type identification (RTTI) أي التعرف علي النوع أثناء التشغيل . وإليك برنامجا يطبق هذه الفكرة .

typeid.cpp


 


// typeid.cpp


// demonstrates typeid() function


#include <iostream.h>


#include <typeinfo.h>      // for typeid()


 


class ClassA


   { };


 


class ClassB


   { };


 


void main()


   {


   ClassA ObjA;


   ClassB ObjB;


 


   if( typeid(ObjA) == typeid(ClassA) )


      cout << "\nObjA is an object of ClassA";


   else


      cout << "\nObjA is not a member of ClassA";


      


   if( typeid(ObjB) == typeid(ClassA) )


      cout << "\nObjB is an object of ClassA";


   else


      cout << "\nObjB is not an object of ClassA";


   }




وخرج هذا البرنامج علي النحو التالي :



ObjA is an object of ClassA



ObjB is not an object of ClassA



ونحتاج أن نصدر برنامجنا بالملف typeinfo.h المتضمن هذه الدالة . وسوف نري في برنامج empl_io.cpp لاحقا كيف أن هذه الإمكانية مفيدة للغاية , إذ تمكن من معرفة حجم الكائن قبل كتابته في الملف .

التسميات: