conversion safety

형 변환 손실 기준

컴파일러가 자동으로 바꿔도 되는지, 직접 캐스팅해야 하는지, 변환 자체를 피해야 하는지 순서대로 확인한다.

1

문맥 확인

대입, 연산, 인자, 반환 중 어디서 생기는지 본다.

2

방향 확인

작은 범위에서 큰 범위로 가면 대체로 안전하다.

3

손실 확인

소수점 절삭, 부호 변경, 범위 초과를 점검한다.

4

의도 표시

필요하면 C++ 스타일 캐스팅으로 이유를 남긴다.

implicit

자동 변환 허용

double d = 10;

값 표현이 넓어지는 경우에 적합하다.

brace

손실 변환 차단

int x{3.14};

중괄호 초기화는 위험한 축소를 오류로 만든다.

static_cast

의도적인 변환

static_cast<double>(n)

정수 나눗셈 회피처럼 목적이 분명할 때 쓴다.

형 변환 손실 위험 신호 C-스타일 캐스팅이 필요해 보이면 어떤 종류의 변환인지 먼저 분리해서 더 좁은 C++ 캐스팅으로 표현한다.