Írja be az azonosítót futásidejű (rtti), programozás c és c

A futásidejű típusazonosító (RTTI) használatával meghatározhatja az objektum fajtáját futásidőben. Ehhez használja a függvénytípust. A funkció használatához fel kell vennie a header file typeinfo.h fájlt. A tipikus bejegyzés általános formája:

Itt az objektum egy objektum, amelynek típusát meg kell határozni. A typeid függvény egy típusú objektum típusú objektumra utal, amely leírja az objektum objektum típusát. (A C ++ szabványtervezetben ez a típus típus_info.) A typeinfo osztály a következő nyilvános tagokat határozza meg:

bool operátor == (const typeinfo ob) const;
bool operátor! = (const típusinfo ob) const;
bool előtt (const typeinfo ob) const;
const char * név () const;

Túlterhelt operátorok == és! = Adja meg a típusok összehasonlítását. Az előző () függvény igaz értéket ad vissza, ha a hívott objektum magasabb a objektum hierarchiában, mint a paraméterként használt objektum. A () előtti funkciót nagyrészt belső használatra szánták. Visszaküldött értéke semmi köze az osztályhierarchiához vagy az örökséghez. A név () függvény egy mutatót ad vissza a típusnévhez.

Amikor a typeid függvény egy polimorf osztály alaposztályára mutató mutatóra kerül, akkor automatikusan visszaadja a mutató által mutatott objektum típusát, beleértve az alap osztályból származó bármely osztályt is. (Amint már említettük, egy polimorf osztály egy olyan osztály, amely legalább egy virtuális függvényt tartalmaz.)

MEMO: A mutatót el kell távolítani. Be kell állítania az RTTI támogatási módot is a fordítóprogramban.

A következő program mutatja a typeid függvény használatát

// típus típusú példa használata
#include
#include
osztály BaseClass int a, b;
virtuális üres f () <>; // BaseClass polimorf
>;
osztály Származtatott1: nyilvános BaseClass int i, j;
>;
osztály Származtatott2: nyilvános BaseClass int k;
>;
int main ()
int i;
BaseClass * p, baseob;
Derivált1 ob1;
Derivált2 ob2;
// először megjelenik a beépített típus neve
cout <<"Typeid of i is ";
cout < // demonstrációs típusid polimorf típusokkal
p = &baseob;
cout <<"p is pointing to an object of type ";
cout < p = &ob1;
cout <<"p is pointing to an object of type ";
cout < p = &ob2;
cout <<"p is pointing to an object of type ";
cout < visszatérés 0;
>

A program a következő eredményt jeleníti meg a képernyőn:

Az i tipus az int
p egy típusú objektumra mutat
p egy Derived1 típusú objektumra mutat
p egy Derived2 típusú objektumra mutat

Az RTTI nem a program által használt eszköz. Ha azonban polimorf típusokkal dolgozik, akkor lehetővé teszi, hogy bármilyen helyzetben megismerje az objektum típusát.

Kapcsolódó cikkek