C++ cast(캐스트)

C++ cast

 

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++ 형 변환)|작성자 편애

이 글을 공유하기

댓글

Designed by JB FACTORY