|
초보 님이 쓰신 글 :
: 팁&트릭 소스중에 mx 서버 쿼리해오는게있던데요
:
:
: dynamic_cast<TMXRecord *>(IdDNSResolver1->QueryResult->Items[i])->ExchangeServer;
:
: 이런 문장인데 저기서 dynamic_cast의 역활이 먼가요??
:
: 검색을 해보니 객체를 타입캐스팅하는데 쓰인다고 하는데 C++을 시작한지 얼마안되서 이해가 잘안되네요..
:
: 도움말에는 IIdDNSResolver1->QueryResult->item[i] <--이게 TResultRecord 형태이고..
:
: TMXRecord는 TResultRecord의 자손이라고 나와있는데.. 왜 저렇게 써야하는지 이해가 잘..^^;
c와는 달리 C++에서는 4가지의 추가된 형변환 연산자를 지원하는데요.
dynamic_cast, static_cast, const_cast, reinterpret_cast 이렇게 4가지 입니다.
reinterpret_cast 는 C에서와 같이 전혀 타입을 따지지 않고 강제로 형변환을 하는 연산자 이구요.
const_cast 는 상수성을 떼버리는 연산자 입니다.(아마 맞을겁니다.. -_-; 자주 안써서..)
static_cast 는 약간의 안정성을 가미한 형변환을 해줍니다.
dynamic_cast 의 경우에는
부모 클래스 -> 상속클래스로의 안전한 형변환을 지원해 줍니다.
예를 들어 dynamic_cast<AAA>(BBB) 의 경우 AAA가 BBB의 자식클래스
혹은 부모클래스가 아닌 경우에 null을 반환하게 합니다.
고로 부모자식간에 안전한 형변환을 지원하는 연산자라 할 수 있겠습니다.
그럼 즐거운 하루 보내시기 바랍니다 ^^;
|