본문 바로가기

기타

C언어에서 reinterpret_cast<int> & (int) 의 차이점

반응형

질문


 

1. reinterpret_cast<int>(a)

2. (int)a

 

 

1번과 2번은 둘다 a라는 변수를 int형으로 변환하는건데

 

무슨 차이점이 있는건지 궁금합니다.

 

 

답변


 

2. 의 경우 전통적인 C 방식의 타입 캐스트 입니다.

1. 의 경우 C++ 방식의 타입 캐스트 입니다.
 
명시적 타입캐스팅을 쓰는 목적은 상황에 맞는 타입 캐스팅을 제대로 쓰기 위함입니다.
 
전통적인 캐스팅과 같은 역할을 하는건 static_cast 에 가깝습니다.
 
전통적 방식과 static_cast 의 경우 컴파일시에 타입캐스팅이 가능한지 체크하여 
서로간에 맞지 않으면 타입캐스팅 오류를 발생시킵니다. 보통 이것을 주로 사용하게 됩니다.
 
하지만 reinterpret_cast 의 경우 
전통적인 방식으로 불가능했던 타입캐스팅을 강제적으로 변환시킵니다.
두 타입의 관계과 명확하거나 특수한 목적으로 서로간에 변환할 때 사용합니다.
일반적인 어플리케이션에서는 거의 쓰이지 않으며 서버나 시스템 프로그래밍 처럼 메모리 공간의 범용성이나 효율성, 특수목적 등을 많이 생각하는 경우 많이 쓰게 됩니다.

특수한 목적을 간단한 예를들면 

문자열로 사용중인 메모리의 공간을 정수형으로 해쉬값을 생성할때 사용할 수 있습니다.

 

반응형

'기타' 카테고리의 다른 글

컴퓨터 음성 스크립트  (0) 2017.07.08
httpd 서버 응답 코드 정리  (0) 2017.07.06
블루스크린 로그 확인  (0) 2017.07.02
iptime 공유기 DMZ설정  (0) 2017.06.27
블루스크린 에러목록  (0) 2017.06.24