C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[37465] Re:[질문]reinterpret_cast코딩의 의미를 알고 싶습니다.
김태선 [jsdkts] 1084 읽음    2004-10-03 20:56
reinterpret_cast은 강제적으로 캐스팅한다는 의미입니다.
:         int i = reinterpret_cast<int>(v);  //여기 의미를 알고 싶퍼요?
이건
int i = int(v); 또는 int i=(int)i;
같은 의미입니다.

참고로,
static_cast와 reinterpret_cast의 차이점에 대한 자료입니다. 이걸 보시면 아래 의문사항들이 해결될 것입니다.
----

static_cast 는 캐스팅이 가능하면 캐스팅을 합니다.

즉 완전히 다른 타입은 캐스팅이 불가능하다는 겁니다.

클래스의 경우 Base클래스와 Derived 클래스가 있고 이것이 서로 상속관계일떄

static_cast<Base*>pDerived;

이런것이 가능하다는 겁니다.

하지만 완전히 다른 A, B 클래스가 있을 경우(상속관계마저 없습니다.)

static_cast 는 에러를 냅니다.

하지만 reinterpret_cast는 강제로 캐스팅을 해버리는거지요.

예를 들어 int형 변수를 char*형으로 캐스팅해서 int형 변수를 마치 char형 배열 4개 처럼 쓸수 있다는 겁니다.

간단히 생각하면 reinterpert -> 재 해석하다. 즉 그 변수가 차지하고 있는 변수 공간을 주어진 타입으로

재해석해버린다는 거죠.

하지만 static 은 이런 뜻 없습니다.





대박전설 님이 쓰신 글 :
: void func(void *v) {
:         int i = reinterpret_cast<int>(v);  //여기 의미를 알고 싶퍼요?
: }
:
: void main() {
:    func(reinterpret_cast<void *>(5)); ////여기 의미를 알고 싶퍼요?
:
:       typedef void (* PFV)();
:
:    PFV pfunc = reinterpret_cast<PFV>(func); //여기 의미를 알고 싶퍼요?
:
:    pfunc();
:
:    }
: help 코드의 부분 입니다.
: 인테져 타입을 포인터로 바뀌는 부분이라는데.. 정확한 의미를 파악하고 싶퍼요

+ -

관련 글 리스트
37462 [질문]reinterpret_cast코딩의 의미를 알고 싶습니다. 대박전설 896 2004/10/02
37483     Re:[질문]reinterpret_cast코딩의 의미를 알고 싶습니다. 이현진 845 2004/10/05
37465     Re:[질문]reinterpret_cast코딩의 의미를 알고 싶습니다. 김태선 1084 2004/10/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.