소년코딩

01.13 - 여러 가지 변수 초기화 방법 (variable initialization)

변수가 정의될 때, 즉시 해당 변수에 값을 지정할 수 있다. 이를 변수 초기화(variable initialization) 또는 짧게 초기화(initialization)라고 한다.

C++은 변수를 초기화하는 세 가지 기본적인 방법을 지원한다.

첫째, 대입 연산자(=)를 사용한 복사 초기화(copy initialization)

int nValue = 5; // copy initialization

둘째, 괄호()를 사용한 직접 초기화(direct initialization)

int nValue(5); // direct initialization

직접 초기화는 함수 호출과 매우 유사하지만, 컴파일러는 어떤 이름이 변수이고 어떤 이름이 함수인지를 잘 추적하여 제대로 컴파일한다.

직접 초기화는 일부 데이터 타입에서 복사 초기화보다 성능이 더 뛰어날 수 있다. 클래스에 관해 설명을 시작하면 다른 이점도 있다. 또한, 초기화와 할당을 구분하는 데도 도움이 된다. 따라서 복사 초기화보다 직접 초기화를 사용하는 것이 좋다.


C++ 11의 유니폼 초기화 (Uniform initialization in C++11)

셋째, 중괄호({})를 사용한 유니폼 초기화(uniform initialization)

복사 초기화 및 직접 초기화는 일부 타입의 변수에 대해서만 작동한다. 모든 데이터 타입에서 작동하는 단일 초기화 메커니즘을 제공하기 위해 C++ 11은 유니폼 초기화(uniform initialization)라는 새로운 형태의 초기화 메커니즘을 추가했다. (brace initialization이라고도 한다.)

int value{5};

{}로 변수를 초기화하면 기본 초기화(defulat initialization)가 된다. 기본 초기화는 변수를 0으로 초기화 한다.

int value{}; // default initialization to 0

또 유니폼 초기화는 형 변환을 허용하지 않는다는 이점이 있다. 변수를 다른 자료형의 값으로 초기화하려고 하면 컴파일러에서 경고 또는 오류가 발생한다.

int value{4.5}; // error: an integer variable can not hold a non-integer value

cpp 번역: 이 포스트의 원문은 http://www.learncpp.com/cpp-tutorial/2-1-fundamental-variable-definition-initialization-and-assignment/ 입니다.

댓글 로드 중…

블로그 정보

소년코딩 - 소년코딩

소년코딩, 자바스크립트, C++, 물리, 게임 코딩 이야기

최근에 게시된 이야기