إيجاد فئة كائن في ++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 لاحقا كيف أن هذه الإمكانية مفيدة للغاية , إذ تمكن من معرفة حجم الكائن قبل كتابته في الملف .
تعليقات
إرسال تعليق