מהו typeid ב-C++

Mhw Typeid B C



C++ היא שפת תכנות רבת עוצמה המציעה מגוון רחב של יישומים למשתמשים שלה. היבט חשוב בשפת התכנות C++ הוא היכולת שלה לתמוך בזיהוי סוג זמן ריצה. ה typeid הוא בין אותם זיהויים מסוג זמן ריצה בשימוש נרחב בתוכניות C++.

אם אתה לא יודע מה typeid נמצא ב-C++, עקוב אחר ההנחיות של מאמר זה.







אופרטור typeid ב-C++

ה typeid הוא אופרטור מובנה בשפת תכנות C++ המאפשר למשתמשים לקבוע את סוג הנתונים של משתנה בזמן הריצה. הערך המוחזר על ידי typeid הוא מסוג 'מידע סוג ', המספק פרטים שונים על סוג האובייקט. זה חשוב באותם מקרים שבהם תוכנית צריכה לבצע מספר פעולות בהתבסס על סוג הנתונים בשימוש.



תחביר של typeid



התחביר של typeid האופרטור ב-C++ הוא כדלקמן:





typeid ( סוּג )

אוֹ:



typeid ( exp )

ה typeid אופרטור ב-C++ מקבל כל אחד משני הפרמטרים הללו.

סוּג : כאשר אנו צריכים לדעת את סוג זמן הריצה של משתנה או אובייקט, אנו מספקים את הארגומנט type בתוך typeid מַפעִיל. יש צורך רק בארגומנט הסוג במקרה זה, ומידע על סוג זמן הריצה ייאסף ללא כל הערכה נוספת או חישוב מקדים.

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

בשימוש עם א typeid , הוא מספק מידע על הסוג המתאים למזהה. בשימוש עם ביטוי, הוא מספק מידע על הסוג הדינמי של האובייקט.

שימושים באופרטור typeid

ה typeid ניתן להשתמש באופרטור בדרכים אלו.

1: כאשר אופרנד פועל כמשתנה של האובייקט

ה typeid ניתן להשתמש באופרטור על אופרנדים כאשר הם פועלים כמשתנה של האובייקט.

#include
#include
שימוש במרחב שמות std;

int main ( ) {
int i;
char ch;
לצוף fl;
כפול db;

const type_info & type_i = typeid ( אני ) ;
const type_info & type_ch = typeid ( ch ) ;
const type_info & type_fl = typeid ( ב ) ;
const type_info & type_db = typeid ( db ) ;

cout << 'סוג ה-int i הוא:' << type_i.name ( ) ;
cout << ' \n סוג התו ch הוא: ' << type_ch.name ( ) ;
cout << ' \n סוג הצף fl הוא: ' << type_fl.name ( ) ;
cout << ' \n סוג ה-DB הכפול הוא: ' << type_db.name ( ) << ' \n ' ;

לַחֲזוֹר 0 ;
}

בקוד לעיל, אנו מצהירים על ארבעה משתנים שונים, כל אחד מסוג נתונים נפרד. לאחר מכן אנו משתמשים ב- typeid מפעיל על משתנים אלה והדפיס את סוגי הנתונים שלהם באמצעות הצהרות cout.

תְפוּקָה

2: כאשר האופרנד הוא ביטוי

ה typeid ניתן להשתמש באופרטור גם כאשר האופרנד מטופל כביטוי.

#include
#include
שימוש במרחב שמות std;

int main ( ) {
int i = 7 ;
char ch = 'א' ;
לצוף fl = 42.4 ;
כפול db = 4,279 ;

const type_info & type_a = typeid ( i+ch ) ;
const type_info & type_b = typeid ( אני * ב ) ;
const type_info & type_c = typeid ( db * ב ) ;
const type_info & type_d = typeid ( i+db ) ;

cout << 'expression i+ch : ' << type_a.name ( ) ;
cout << ' \n ביטוי i*fl: ' << type_b.name ( ) ;
cout << ' \n ביטוי db*fl: ' << type_c.name ( ) ;
cout << ' \n ביטוי i+db: ' << שם מוקלד ( ) ;
לַחֲזוֹר 0 ;
}

בקוד לעיל, אנו מאתחלים ארבעה משתנים מסוגי נתונים שונים. לאחר מכן אנו מעריכים כמה ביטויים ומחשבים את הסוג שלהם באמצעות ה-C++ typeid () מפעיל.

תְפוּקָה

יתרונות וחסרונות של typeid ב-C++

ה typeid שימושי בעת כתיבת קוד שעובד עם אובייקטים שאינם ידועים עד זמן הריצה. לדוגמה, נניח שפונקציה לוקחת מצביע ריק כפרמטר. זה יכול להשתמש typeid כדי לקבוע אם המצביע הוא ל-int או כפול, מה שיכול להשפיע באופן משמעותי על אופן הפעולה של הפונקציה.

בנוסף לשם הסוג, ה-' info type ” האובייקט מספק גם פרטים שונים אחרים על הסוג. אלו כוללים:

  • האם הטיפוס הוא סוג בסיסי, סוג מצביע או סוג מוגדר על ידי משתמש.
  • האם הסוג הוא 'const' או 'נדיף'.
  • האם הטיפוס הוא סוג מחלקה, ואם כן, האם הוא פולימורפי.
  • האם הטיפוס הוא סוג מערך, ואם כן, מה המידות.
  • האם הטיפוס הוא סוג הפניה.

ה typeid מועיל גם כאשר עוסקים בתבניות ופונקציות שלוקחות מספר משתנה של ארגומנטים. באמצעות ' typeid ' אופרטור, אתה יכול לבצע פעולות ספציפיות לסוג בזמן ריצה, כגון בחירת התבנית או הפונקציה הנכונים לשימוש.

חיסרון אפשרי אחד של typeid זה שהוא קצת איטי. זה בדרך כלל איטי יותר מאשר סוגים אחרים של בדיקת סוגים, כגון פרמטרים של תבנית או בדיקות סוג של זמן קומפילציה מכיוון שהוא בוחן את סוג האובייקט במהלך זמן ריצה.

סיכום

ה ' typeid ' אופרטור ב-C++ מספק מידע רב ערך על סוג הנתונים של משתנה או אובייקט. הוא מאפשר למתכנתים לבצע פעולות ספציפיות לסוג בזמן ריצה וניתן להשתמש בו כאשר האופרנד פועל כמשתנה, או כאשר האופרנד הוא ביטוי.