C++ typeid i informacje o typie podczas działania programu
Informacje o typie czasu wykonywanie (Run Time Type Information RTTI)
#include <typeinfo>
typeid(wyrażenie).informacja
informacja:
-name()
*int nX = 10;
time_t czas time(NULL); tmData = *localtime(&Czas);
cout<<typeid(nX).name(); //wynik "int"
cout<<typeid(Data).name(); //wynik "struct"
*Jeżeli to nazwa typu w czytelnej i przypomniej dla człowieka formie. Możemy ją przechowywać i operować nią tak jak każdym innym napisem.
-nazw_name()
*Zwraca nazwę typu wewnętrznie używaną przez kompilator. Taka nazwa musi być unikalna dlatego zawiera różne "dekoracje" znak, jak? czy @. nie jest czytelnia dla człowieka, ale można ewentualnie służyć w celach porównawczych.
np. unsigned "X"
if (typeid(X) == typeid(unsigned)) //inaczej != typeid(X/0,618)
cout << "świetnie nasz kompilator działa";
typeid może też służyć nam do sprowadzenia klasy, do której należy polimorficzny obiekt wskazawany przez wskaźnik np.:
IAnimal* pZwierzę = new CBird;
cout << typeid(pZwierze).name();
//wynik "Class Animal*"
cout << typeid (*pZwierzę).name();
//wynik "ClassCBird";
#include <typeinfo>
typeid(wyrażenie).informacja
informacja:
-name()
*int nX = 10;
time_t czas time(NULL); tmData = *localtime(&Czas);
cout<<typeid(nX).name(); //wynik "int"
cout<<typeid(Data).name(); //wynik "struct"
*Jeżeli to nazwa typu w czytelnej i przypomniej dla człowieka formie. Możemy ją przechowywać i operować nią tak jak każdym innym napisem.
-nazw_name()
*Zwraca nazwę typu wewnętrznie używaną przez kompilator. Taka nazwa musi być unikalna dlatego zawiera różne "dekoracje" znak, jak? czy @. nie jest czytelnia dla człowieka, ale można ewentualnie służyć w celach porównawczych.
np. unsigned "X"
if (typeid(X) == typeid(unsigned)) //inaczej != typeid(X/0,618)
cout << "świetnie nasz kompilator działa";
typeid może też służyć nam do sprowadzenia klasy, do której należy polimorficzny obiekt wskazawany przez wskaźnik np.:
IAnimal* pZwierzę = new CBird;
cout << typeid(pZwierze).name();
//wynik "Class Animal*"
cout << typeid (*pZwierzę).name();
//wynik "ClassCBird";
Komentarze
Prześlij komentarz