Conversion

C++ 형 변환 결정 사다리

C++은 상황에 따라 자동 변환을 시도하지만, 값 손실 가능성이 있으면 명시적 의도가 필요하다.

컴파일러가 변환을 고르는 순서

conversion rank

Promotion

작은 정수 타입이 int 등 더 안전한 타입으로 승격된다.

Standard

수치 타입, 포인터, bool 변환 등 표준 변환이 적용된다.

Narrowing

범위나 정밀도가 줄어드는 변환은 버그가 될 수 있다.

Explicit Cast

의도가 분명할 때 static_cast 등으로 명시한다.

expressionpromotionstandard conversion축소 변환 점검explicit cast
변환 손실

암시적 변환은 편의 기능이지만 오버로드와 산술 결과를 바꿀 수 있다. 손실 가능성은 코드에 드러내는 편이 안전하다.