01.13 - 여러 가지 변수 초기화 방법 (variable initialization)
변수가 정의될 때, 즉시 해당 변수에 값을 지정할 수 있다. 이를 변수 초기화(variable initialization) 또는 짧게 초기화(initialization)라고 한다.
C++은 변수를 초기화하는 세 가지 기본적인 방법을 지원한다.
첫째, 대입 연산자(=
)를 사용한 복사 초기화(copy initialization)
int nValue = 5;
둘째, 괄호()
를 사용한 직접 초기화(direct initialization)
int nValue(5);
직접 초기화는 함수 호출과 매우 유사하지만, 컴파일러는 어떤 이름이 변수이고 어떤 이름이 함수인지를 잘 추적하여 제대로 컴파일한다.
직접 초기화는 일부 데이터 타입에서 복사 초기화보다 성능이 더 뛰어날 수 있다. 클래스에 관해 설명을 시작하면 다른 이점도 있다. 또한, 초기화와 할당을 구분하는 데도 도움이 된다. 따라서 복사 초기화보다 직접 초기화를 사용하는 것이 좋다.
셋째, 중괄호({}
)를 사용한 유니폼 초기화(uniform initialization)
복사 초기화 및 직접 초기화는 일부 타입의 변수에 대해서만 작동한다. 모든 데이터 타입에서 작동하는 단일 초기화 메커니즘을 제공하기 위해 C++ 11은 유니폼 초기화(uniform initialization)라는 새로운 형태의 초기화 메커니즘을 추가했다. (brace initialization이라고도 한다.)
int value{5};
빈 {}
로 변수를 초기화하면 기본 초기화(defulat initialization)가 된다. 기본 초기화는 변수를 0으로 초기화 한다.
int value{}; // default initialization to 0
또 유니폼 초기화는 형 변환을 허용하지 않는다는 이점이 있다. 변수를 다른 자료형의 값으로 초기화하려고 하면 컴파일러에서 경고 또는 오류가 발생한다.
int value{4.5};
번역: 이 포스트의 원문은 http://www.learncpp.com/cpp-tutorial/2-1-fundamental-variable-definition-initialization-and-assignment/ 입니다.