반응형
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);
}
반응형
'프로그래밍 언어 > C++' 카테고리의 다른 글
[C++] 람다 표현식 lambda expression (2) | 2025.01.25 |
---|---|
[C++] const_cast 필요성 및 활용 (4) | 2025.01.22 |
[C++] [STL] Vector 사용 방법 (1) | 2025.01.20 |
[C++] 레퍼런스 Reference (2) | 2025.01.19 |
[C++] Lambda expression 지역 변수 캡처 (2) | 2025.01.18 |
댓글