'C++ Cast'에 해당되는 글 1건

  1. 2011.05.31 C++ _ cast 종류
2011.05.31 10:21

satatic_cast

C스타일의 캐스팅과 비슷하다.

용도와 제약 사항.

실수형과 정수형정수형과 열거형등의 기본 데이터 타입 간의 변환

상속관계의 클래스 계층 간의 변환

런타임 타입 검사를 하지 않음

다형성이 없어도 변환 가능 (RTTI 옵션이 꺼져있어도 된다)

다중 상속에서 기본 클래스 간의 타입 변환은 못함

 

void 포인터를 다른 타입의 포인터로 변환

 

서로 다른 타입의 포인터 간의 타입 변환은 못함

 

서로 다른 타입의 포인터 간의 타입 변환에 reinterpret_cast 를 사용하기보다는 void 포인터를 경유하는 방식을 추천한다.

dynamic_cast

dynamic_cast 는 상속 관계 안에서 포인터나 참조자의 타입을

 

기본 클래스에서 파생 클래스로의 다운 캐스팅과 다중 상속에서 기본 클래스 간의 안전한 타입 캐스팅에 사용된다.

 

안전한 타입 캐스팅이란 런타임에 타입 검사를 한다는 것이다.

- 용도와 제약 사항.

상속 관계 안에서만 사용할 수 있다.

 

하나 이상의 가상함수를 가지고 있어야 한다.

 

컴파일러의 RTTI 설정이 켜져 있어야 한다.

const_cast

const_cast 는 포인터 또는 참조형의 상수성(const)을 제거하는 데 사용된다.

 

다른 용도로는 사용하지 못하며 다른 캐스트 연산자는 상수성을 제거할 수 없다.

reinterpret_cast

캐스팅 대상을 캐스팅 타겟 타입으로 비트단위로 다시 재해석한다.

C 스타일 캐스팅과 가장 비슷하다고 보면된다.

const_cast 의 역할인 상수성을 날린다거나 하는 등의 기능은 수행하지 못한다.

- 용도와 제약 사항.

전혀 관계없는 타입 간의 변환

 

상속관계가 없는 클래스 간의 변환 포함

 

const_cast 의 기능은 수행하지 못함

  

reinterpret_cast  C 캐스팅 연산자 다음으로 위험하다.

 

캐스팅 결과는 컴파일러마다 다를 수 있다그만큼 이식성이 적다.

 

캐스팅이 자유로운 만큼 모든 책임은 프로그래머에게 돌아온다.

신고
Posted by 우엉 여왕님!! ghostkyow

티스토리 툴바