C++ 01.13 - 여러 가지 변수 초기화 방법 (variable initialization)
2018. 7. 4. 15:15 - 소년코딩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
번역: 이 포스트의 원문은 http://www.learncpp.com/cpp-tutorial/2-1-fundamental-variable-definition-initialization-and-assignment/ 입니다.
'C++ 이야기 > 01. C++ 기초' 카테고리의 다른 글
C++ 01.12 - 헤더 가드 (header guard) (0) | 2018.06.23 |
---|---|
C++ 01.11 - 전처리기 (preprocesser) (5) | 2018.06.23 |
C++ 01.10 - 헤더 파일 (header file) (2) | 2018.06.23 |
C++ 01.09 - 전방 선언과 정의 (forward declarations and definitions) (0) | 2018.06.23 |
C++ 01.08 - 연산자 (operator) (0) | 2018.06.23 |