1. RTTI ¶
๋์ ์ผ๋ก ๋ง๋ค์ด์ง ๋ณ์์ ํ์
์ ๋น๊ตํ๊ณ , ํน์ ํ์
์ผ๋ก ์์ฑํ๋ ๊ฒ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค. (์๋ฐ์์๋ instanceof๋ฅผ ์๊ฐํด๋ณด๋ฉด ๋ ๋ฏ)
MFC์์๋ C++์์ ํ์ค์ผ๋ก ์ด์ฉ๋๊ธฐ ์ด์ ๋ถํฐ ๋งคํฌ๋ก๋ฅผ ์ด์ฉํ ๋ฐฉ๋ฒ์ผ๋ก ์ด๊ฒ์ ์ง์ํ์ผ๋ฉฐ, ์์ง๋ ๊ทธ ์์ฌ๊ฐ ๋จ์์๋ค.
2. example ¶
์๋๋ RTTI์ ์ฐ์์๋ฅผ ํํํ ์ผ์์ด๋ค.
์์์ ๋ณด๋ฏ์ด ํด๋์ค์ ํ์ ๋น๊ตํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
~cpp class base { }; class derived : public base { int compare(derived &ref); }; int my_comparison_method_for_generic_sort(base &ref1, base &ref2) { derived d = dynamic_cast<derived &>(ref1); // rtti used here // rtti enables the process to throw a bad_cast exception // if the cast is not successful return d.compare(dynamic_cast<derived &>(ref2)); }