RTTI(Run Time Type Information Identification) - kurkim0661/jihwan GitHub Wiki
ν μΈμ΄μ 리νλ μ κ³Ό λΉμ·νλ€. type_info, type_indexλ₯Ό μ¬μ©νλ€.
μ°μ
#include <typeinfo>
λ₯Ό ν΄μ€μΌνλ€.
μμ 1 :
#include <iostream>
#include <typeinfo>
int main()
{
std::type_info const *ptr;
{
ptr = &typeid(int);
}
std::cout << ptr->name() << std::endl;
}
μμ 2 :
#include <iostream>
#include <map>
#include <typeindex>
int main()
{
std::map< std::type_index, std::string > m =
{
{ typeid(int), "int" },
{ typeid(double), "double"}
} ;
std::cout << m[typeid(int)] << '\n' ;
}
λ€μκ³Ό κ°μ΄ mapμ μ μ₯νκΈ° μν λ°©μμΌλ‘ μ¬μ©ν μλ μμ§λ§ μμ λΆλͺ¨κ°μ μμμμ μμ μ±μ ν보νκΈ° μν΄ μ°μΌ μ μλ€.
class A {
public:
virtual void vf(){}
};
class B : public A {};
class C : public A {};
class D : public A {};
int main() {
A *a[]={&B(), &C(), &D()};
cout<< typeid(*a[0]).name() << endl;
cout<< typeid(*a[1]).name() << endl;
cout<< typeid(*a[2]).name() << endl;
}
λ€μκ³Ό κ°μ΄ Aλ‘ νλ³νμ νμ§λ§ κ²°κ³Όλ class B,C,Dλ₯Ό λνλΈλ€.