C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[62197] 조언부탁드립니다...
질문 [] 952 읽음    2010-08-18 23:47
RTTI에 대해 공부를 하였습니다
RTTI가 실행중에 객체의 정보를 얻는 것을 말하는것 같은데
근데 이해가 안되는게 몇가지 있습니다

1. 왜 RTTI가 필요한가??
   -> 다형성 (같은 이름 다름 기능) 즉 virtual와 같은 가상함수를 자식 클래스에서 각각 재정의했을경우
      그리고 부모 클래스에 자식클래스를 할당 했을 경우
      즉) MainClass* main = new chaildClass; 이런식으로 선언을 했을 경우 RTTI를 사용해서 main이 
          chaildClass의 객체라는 것을 알려주는 것인데...이게 왜 굳이 필요한건가요??
      애초에 정의를 할 때 자식 클래스를 할당을 했는데 굳이 이것이 내가 맞게 자식 클래스를 할당했을지
      단순히 확인을 위해 사용된다는데(인터넷 찾아보니 RTTI설명한 것중에 나와있었음) 단순히 이 이유만은 아닐 것
      같아서요...
      그런데 MFC 속성 창을 보니 런타임 형식 정보 사용을 예라고 설정되어 있더라구요 즉 이말은
      MFC에서는 RTTI를 사용하겠다는 소리이고.. RTTI를 사용하는 곳이 BEGIN_MESSAGE_MAP, END_MESSAGE_MAP 뭐
      이런 define문에서 사용되는것 같은데 맞나요?? (RTTI 예제 중 define처리해서 표현한게 있길래 추측입니다)
      그렇다면 왜 MFC에서는 RTTI를 어떤 경우에 왜 사용을 하는것인지 궁금합니다...
      사용방법이나 예제 같은건 쉽게 구해서 공부를 했는데 정작 이것이 왜 필요한지 왜 사용되는지는 잘 설명이
      되어 있질 않더라구요...
2. RTTI는 가상테이블에만 존재한다??
   -> 가상함수를 사용하는 클래스에 국한되어 사용되도록 되어 있으니 가상함수테이블에 RTTI가 저장되는건
      이해가 갑니다 그런데 이 RTTI를 어떤식으로 호출하게되는건가요??


      가상함수를 정의되어 있는 클래스를 b라고 객체선언을 했을 경우 메모리상에 가상테이블을
      가리키는 포인터 값을 가지고 있고 이 포인터 값을 따라가면 가상함수테이블 해당 클래스가 가지고 있는
      가상함수의 주소를 배열처럼 쭉 가지고 있는데 그럼 RTTI는 가상함수 주소값 처럼 RTTI주소값(?)이 가상함수
      테이블에 나타나 있는건가요?? RTTI가 가상함수 테이블에 어떤 형태로 저장되어 있는지 궁금합니다...
3. 용어 정리
   -> RTTI가 실행중에 객체의 정보를 얻는 것을 말하는것이라는데 RTTI 자체가 어떤 건가요?
      클래스 타입인건가요?? 아니면 그냥 용어인가요?? 아니면 객체(?)인가요??
RTTI라는 새로운 개념에 대해 이것저것 알아가고 있는데 위의 질문에 대한 답은 잘 없네요...
3번 질문에 대해서 어떤 분이 언어의 기능, 혹은 컴파일러의 기능을 칭하는 명칭이라고도 하는데...이게 무슨뜻인지
이해가가질 안아서 같이 문의드립니다...

+ -

관련 글 리스트
62197 조언부탁드립니다... 질문 952 2010/08/18
62208     Re:조언부탁드립니다... aaa 922 2010/08/19
62198     Re:조언부탁드립니다... Lyn 975 2010/08/19
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.