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λ₯Ό λ‚˜νƒ€λ‚Έλ‹€.

⚠️ **GitHub.com Fallback** ⚠️