변환 목적을 말한다
숫자 폭 조정인지, 기반/파생 이동인지, C API 경계인지에 따라 사용할 cast가 달라진다.
C++의 cast는 모두 같은 변환이 아니다. 값 변환, 포인터 계층 변환, const 제거, 비트 재해석을 구분해야 실패 범위를 좁힐 수 있다.
숫자 폭 조정인지, 기반/파생 이동인지, C API 경계인지에 따라 사용할 cast가 달라진다.
부호, 소수점, 포인터 정렬, 객체 실제 타입 같은 손실 지점을 변환 앞에서 확인한다.
cast는 넓게 퍼뜨리지 않고 외부 API나 직렬화 경계처럼 이유가 있는 위치에 둔다.
auto count = static_cast<std::size_t>(n);
if (auto* button = dynamic_cast<Button*>(widget)) {
button->press();
}