Reinterpret_cast는 다른 주소를 반환하지 않습니다. 정확한 주소를 복사해야합니다.
데이비드로드 리 게스 (David Rodriguez)와 같이 다중 상속의 경우베이스 중 하나의 주소를 가져 가면 첫 번째 기준의 주소에 오프셋이있는 주소가 반환 될 수 있습니다. Reinterpret_cast는 오프셋 주소를 반환하지만 업 캐스트 주소로 처리하면 지옥이 계속됩니다.
업 캐스팅의 경우 static_cast는 주어진 주소와 다른 주소를 반환 할 수 있습니다. 갖고있는 주소가 기지 중 하나이고 해당 주소가 첫 번째 기본 주소의 오프셋에있는 경우 static_cast는 첫 번째 기본 주소와 같으므로 업 캐스팅 된 객체에 유효한 주소를 반환합니다 전달 된 포인터에.
짧게하려면 : reinterpret_cast는 항상 동일한 주소를 제공합니다. Static_cast 및 dynamic_cast는 다른 주소를 반환 할 수 있습니다 (예 : 어떤 경우에는 다중 상속이 필요합니다.
static_cast와 dynamic_cast의 차이점은 static_cast가 지정한 포인터가 캐스트에 적합한 개체인지 여부를 확인하지 않기 때문에 호출하기 전에 static_cast에서 해당 개체를 확인해야한다는 것입니다.
포인터가 가리키는 "값을 변경"한다는 의미입니까? – akira
@akira : 아니요, 포인터 자체의 값을 변경합니다 – sharptooth
다음과 같은 의미입니다 :'T * t = 0x13; Q * q = 0x42; t = reintrepret_cast