긴설명보다 이정도?
다만, 실제적으로 일하면서 쓸경우는 c++의 캐스트연산자는 안쓰고, 아직도 c의 캐스트 연산자 즉 평소 아무생각없이 사용하는 형태로만 주로 써왔다. static_cast가 아마 비슷하겠지만, 좀 더 컴파일러 단에서 오류를 뱉어내서 좀 더 실수를 줄여주는 정도일 것이다.
const, reinterpret는 잘은 사용안하지만,
그나마 프로페셔널한 코드에서 주로 보이는 것은 dynamic_cast이다.
상속관계에서 업캐스트와 다운캐스트를 자주 변환하고 한다.
업캐스트는 항상 캐스팅이 가능할지몰라도, 다운캐스트는 상황에 따라 다르다.
만약 올바른 상황에서 c의 캐스트연산 혹은 static_cast를 쓴다면 문제는 없겠지만, 그렇지 않을경우 잘못된 캐스트가 발생되어 런타임에 오류가 발생할 것이다.
그래서 dynamic_cast를 통해 내부적으로 RTTI 체킹을 통해 캐스팅을 진행하여 잘못된 캐스트시 널포인트를 리턴하게 되어 그나마 실수를 줄일수 있는 코드가 될수있다.
표는 http://soen.kr에서 퍼옴
캐스트 연산자 | 변환 형태 |
static_cast | 상속 관계의 클래스 포인터 및 레퍼런스. 기본 타입. 타입 체크 안함 |
dynamic_cast | 상속 관계의 클래스 포인터 및 레퍼런스. 타입 체크. RTTI 기능 필요 |
const_cast | const, volatile 등의 속성 변경 |
reinterpret_cast | 포인터끼리, 포인터와 수치형간의 변환 |
'프로그래밍 > 공부관련' 카테고리의 다른 글
설계 준비 - 바람직한 설계의 특징 (0) | 2014.12.04 |
---|---|
private 변수접근해서 값 바꾸기 (0) | 2014.06.19 |
MFC에서 debug mode와 Release mode의 문제가 생길시 (0) | 2013.04.30 |
QT] 라벨 및 각 컨트롤에 대한 스타일시트적용 예 (0) | 2013.04.24 |
1월2주차 - DB공부 (1) (0) | 2013.01.08 |