5.5 초기자
2.3절에서 설명했듯이 초기자(initializer)는 오브젝트 정의에서 중요한 역할을 담당한다. 초기자를 이용하면 프로그램이 실행될 때 항상 일정한 상태에서 시작하도록 보장할 수 있다. 그래서 오브젝트에 접근할 때마다 언제나 추상 기계의 상태를 표현하는 값이 존재한다.
TAKEAWAY 5.35 변수는 반드시 초기화한다.
이 규칙이 적용되지 않는 때가 있다. 초기자를 사용할 수 없는 VLA(variable-length array)(가변 길이 배열, 6.1.3절)와 고도로 최적화해야 하는 코드가 그렇다. 후자는 주로 포인터를 사용하므로 자세한 사항은 뒷 장에서 소개한다. 지금까지 배운 지식으로 작성할 수 있는 코드라면 대부분 최신 컴파일러로 초깃값부터 최종 대입한 값까지 추적할 수 있다. 그래서 불필요한 초기화나 대입문은 최적화 과정에서 제거된다.
정수나 부동 소수점과 같은 스칼라 타입에 대한 초기자는 해당 타입으로 변환 가능한 표현식으로 지정한다. 이런 예는 지금까지 많이 봤다. 초기자 표현식을 중괄호({})로 묶어도 된다. 예를 들면 다음과 같다.
double a = 7.8; double b = 2 * a; double c = { 7.8 }; double d = { 0 };