중괄호 초기화 (Brace Initialization):
C++11부터 소개된 중괄호 초기화는 객체의 초기화 방법을 통일하고자 도입되었다.
이 방식의 장점:
- 일관된 문법: 동일한 중괄호 {} 문법을 사용하여 변수, 객체, 배열, STL 컨테이너 등을 초기화할 수 있다.
- narrowing conversion 방지: {}를 사용하여 초기화할 때 형 변환이 수행되지 않거나 값의 손실이 발생하지 않도록 한다.
int i{3.14}; // 컴파일 오류. narrowing conversion 방지
- 기본 생성자와 동일한 문법: 중괄호를 사용하여 기본 생성자를 호출하는 것도 가능하다.
std::vector<int> vec{}; // 비어 있는 벡터 생성
다양한 초기화 방법들
C++에서는 여러 가지 방법으로 변수나 객체를 초기화할 수 있다:
직접 초기화 (Direct Initialization): 전통적인 괄호 ()를 사용한 초기화 방법이다.
int a(10);
std::string str("Hello");
복사 초기화 (Copy Initialization): = 연산자를 사용한 초기화 방법이다.
int a = 10;
std::string str = "Hello";
Uniform Initialization (Brace Initialization): 중괄호 {}를 사용한 초기화 방법이다.
int a{10};
std::string str{"Hello"};