검색결과 리스트
캐스트에 해당되는 글 1건
- 2009.09.15 C++ 캐스트 연산자
글
C++로 프로그래밍을 할때도 C 캐스팅을 사용하고 있습니다.
이유는 C++ 캐스트 연산자 보다 타이핑 작성라인이 적어지고 익숙해서 편하기 때문이죠...
그렇지만 여러 자료나 많은 분들이 타입변환시 더 안정적인 C++ 캐스트 연산자를 사용하라고
조언하고 있습니다.
* static_cast<타입>(대상) : 논리적으로 변환 가능한 타입을 변환한다.
설명 : 포인터끼리 타입을 변환할 때는 상속 관계에 있는 포인터끼리만 변환이 허용되면 상속 관계가 아닌
포인터끼리는 변환을 거부한다.
* dynamic_cast<타입>(대상)
설명 : 부모 타입의 포인터를 자식 타입의 포인터로 다운 캐스팅할 때 무조건 변환을 허용하지 않고
안전하다고 판단될 때만 허용한다.
다운 캐스팅 할때 static_casts는 무조건 변환을 허가하지만 dynamic_cast는 실행 중에 타입을
점검하여 안전한 캐스팅만 허가한다.
따라서 이 연산자가 변환 가능성을 판한하기 위해서는 실행 중에 객체의 실제 타입을 판별할 수 있어야 한다.
* const_cast<타입>(대상)
설명 : 포인터의 상수성만 변경하고 싶을 때 사용한다.
* reinterpret_cast<타입>(대상)
설명 : 임이의 포인터 타입끼리 변환을 허용하는 상당히 위험한 캐스트 연산자.
이 연산자는 포인터 타입간의 변환이나 포인터와 수치형 데이터의 변환에만 사용하며 기본 타입들끼리의
변환에는 사용할 수 없다.
static_cast 상속 관계의 클래스 포인터 및 레퍼런스. 기본 타입. 타입 체크 안함.
dynamic_cast 상속 관계의 클래스 포인터 및 레퍼런스. 타입 체크. RTTI 기능 필요
const_cast const. volatile 등의 속성 변경
reinterpret_cast 포인터끼리, 포인터와 수치형간의 변환
참고 : 혼자 연구하는 C/C++ (김상형 저/와우북스)
'C/C++ > VC++ / MFC' 카테고리의 다른 글
MFC 디버깅시 MS MFC 소스코드를 쫓아서 디버깅할때는 Static Library... (0) | 2010.09.03 |
---|---|
[dumpbin] error LNK2019: unresolved external symbol "__declspec(dllimport) (0) | 2009.10.24 |
타입 변환 연산자 (0) | 2009.08.13 |
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int (0) | 2008.11.12 |
template을 이용하여 C++을 작성할때는 꼭 .h에서 작성하자 (2) | 2008.10.15 |
RECENT COMMENT