본문 바로가기
프로그래밍 언어/C++

[C++] reinterpret_cast 필요성 및 사용 방법

by 까망 하르방 2025. 1. 21.
반응형

reinterpret_cast

reinterpret_cast<type_id>(expression);

→ reinterpret_cast<바꿀 타입>(대상);

 

• 메모리 재해석
• 서로 다른 타입 주소 캐스팅
• 정수 ↔ 주소 사이 캐스팅

 


C++에서는 주로 static_cast 활용하는데
다른 타입으로 변환하며 error 발생한다.

#include <iostream>

int main()
{
	int harbang = 100;

	char* p = static_cast<char*>(&harbang); // error
	char& r = static_cast<char&>(harbang);  // error
}

 

 

아래와 같이 다른 타입으로 캐스팅 시 활용된다.

#include <iostream>

int main()
{
    int harbang = 100;

    // int -> char
    char* p = reinterpret_cast<char*>(harbang); // ok
    char& r = reinterpret_cast<char&>(harbang); // ok
}

 

 

특정 주소를 point 주소로 설정할 때도
reinterpret_cast 활용해주어야 한다.

#include <iostream>

int main()
{
	// error
	int* harbang = static_cast<int*>(0x1000); 

	// ok
	int* forst = reinterpret_cast<int*>(0x1000);
}

 

 

C++ 에서는 cast 방식을 용도에 나누어 구분하였기에
static_cast가 못하는 처리를 reinterpret_cast 가 해주듯이
반대로 reinterpret_cast 가 처리 못하는 캐스팅 사용은 주의해야 한다.

#include <iostream>

int main()
{
	// 정수 -> float
	float f = reinterpret_cast<float>(100);
}

반응형

댓글