C++ cast(캐스트)
- 프로그래밍/C++
- 2011. 3. 20. 23:24
|
1. static_cast : A 타입에서 B 타입으로
- C 캐스팅과 동일한 형태를 가진다.
- 지정된 타입으로 변환이 가능하다.
- 업캐스팅, 다운캐스팅 모두 가능하다.
2. const_cast : const 혹은 volatile의 성향 삭제
- 상속관계 이동, 기본연산자 캐스팅에는 사용할 수 없다
3. dynamic_cast : 상속관계에서 안전 형 변환 (가상함수가 없는 형태에서는 사용할 수 없다)
- 부모 포인터나 참조자의 타입을 자식 클래스 또는 형제 클래스의 타입으로 변환해준다.
- 실패 시에는 NULL 반환
- 가상함수 테이블을 사용하기 때문에 가상함수가 없는 상속관계에서는 사용할 수 없다. (가상함수 테이블이 없으면 캐스팅 불필요)
- 매우 고비용의 캐스팅이므로 가능하면 피하는 것이 좋다.
4. reinterpret_cast : 상관없는 자료형의 두 데이터간의 형 변환 (강제형변환)
- 컴파일러마다 다르게 정의되어있기 때문에 소스의 이식성은 크게 떨어진다.
- 포인터끼리의 타입 변환에 이용된다 (상속관계 없어도 가능)
- 포인터와 수치형간의 변환에 이용
- 강제 형 변환이기 때문에 가능하면 피하는 것이 좋다
출저: http://blog.naver.com/kyung778?Redirect=Log&logNo=60121742619
[출처] c++ cast (c++ 형 변환)|작성자 편애
이 글을 공유하기