|
if(dynamic_cast<TButton*>(Sender))
는 가능하지만
if((TButton*)Sender)
는 불가능하죠.(전혀 설명이 안되는 기분인데요;;;)
좀 더 길게 쓰면 가장 맨 위쪽에 있는 TObject로 들어오는 Sender가 TButton이라는 걸 알려주는 역할이라는 점은 똑같지만 그냥 형변환하는 경우에는 무조건 변환하려다가 에러가 나버리지만, dynamic_cast의 경우에는 실패해도 그냥 false를 반환하고 끝나는 차이가 있습니다.
황경록 님이 쓰신 글 :
: 헬프에서 아래의 부분이 핵심이군요...
:
: The conversion to a base class is resolved at compile time. A conversion from a base class to a derived class, or a conversion across a hierarchy is resolved at runtime.
:
: C++ 에서 그냥 -_- 코드 보기 조아라~해서 만든(;;;; 그냥 제생각) 형 변환 연산자 정도로 생각합니다.
:
: 어떤 클래스와 그 클래스와 뿌리를 같이 하는 클래스 간의 메모리 포인터 공유정도라고 생각합니다.
:
: TMyClassA 가 TObject 에서 파생된 클래스라 치고
: TMyClassB 가 TMyClassA 에서 파생된 클래스라 친다면
: TMyClassA, TMyClassB, TObject 는 포인터를 저장하는 영역이 동일하다고 해야 할까요?
:
: 이게 생각외로 훌륭한 기능이라 볼 수 있는것이죠 ^^
:
: TMyClassA* pA;
: TObject* pO = pA;
:
: 아... -_- 말주변 안섭니다.;;;;;; 역시 프로그래머를 하는게 아니였는데 ㅠ-ㅠ;
: 앗;;; 급한일이 있어서 ~
:
: 글잘쓰시는 분들과 정확하게 아시는 분들을 첨부를 바라며 이만~;;
:
: 쥬신 님이 쓰신 글 :
: : dynamc_cast 를 동적으로 캐스팅을 해준다고 하는데요.
: : 이게 무슨 의미죠. 설명을 부탁드립니다. 핼프 파일에 보고 나니까 더 이해가 안되서요.
: : 형태를 바꿔 준다라고 생각이 됩니다만..
|