캐스팅은 변환의 이유가 보이도록 고른다
C 스타일 캐스트는 의도를 숨깁니다. C++ 캐스트는 어떤 종류의 위험을 받아들이는지 이름으로 남깁니다.
캐스트
쓸 때
먼저 의심할 점
static_cast
숫자 변환처럼 타입 관계가 컴파일 시점에 분명하다.
정밀도 손실과 범위 초과를 확인한다.
dynamic_cast
상속 계층에서 실제 객체 타입을 런타임에 확인한다.
설계가 지나치게 타입 분기에 의존하지 않는지 본다.
const_cast
API 경계에서 const 속성만 제한적으로 조정한다.
원래 const 객체를 수정하면 안 된다.
reinterpret_cast
비트 패턴을 다른 타입처럼 재해석해야 하는 저수준 경계다.
일반 코드에서는 대체 설계를 먼저 찾는다.
원칙: 숫자 보정은 static_cast에서 시작하고, 나머지 캐스트는 목적이 설명될 때만 둡니다.