---C++ 역량 강화---/STL 공부

uniform initialization

코리아탑클 2024. 6. 3. 21:29

[[[문제]]]

다른 글들을 보면 이코드 저코드에서 심심치 않게 사용한 것을 볼 수 있다. 균일 초기화라고 한다.

c++11에서 도입되었고 {}를 사용하여 초기화 한다.

다른 설명을 하려는건 아니고, 이것을 사용할 때 헷갈릴 수 있는 부분 하나를 지적하고자 한다. 

축소 변환이 안된다는 것이다.

 

[[[관찰]]]

벡터에서 균일 초기화를 하는 것은 

v.push_back(1), v.push_back(2), v.push_back(3) 이런 식으로 push_back()을 하는 것이다.

직접 push_back을 해보면 알아서 int type으로 형변환 된다.

축소 변환이 안된다는 것을 알 수 있다.

형 변환에 오류를 방지하기 위해서 일부로 막아놓은 것이다. 

 

이왕 한 김에 균일 초기화를 사용하는 몇가지 예시를 더 적어보도록 하겠다.

==예제==

array도 가능

둘 다 동일한 초기화 방법이고 컴파일러는 두 표현을 같은 방식으로 처리한다.

 

배열도 가능

 

구조체도 가능

 

클래스도 가능

 

C++11에서는 생성자를 이용한 객체 생성을 균일 초기화로 가

x{num1}, y{num2}에서 쓰이는 brace는 constructor initialization list라고 한다. 이니셜라이저 리스트. 초기화 리스트.

brace: 대괄호

'---C++ 역량 강화--- > STL 공부' 카테고리의 다른 글

copy  (0) 2024.06.04
stable_sort  (0) 2024.06.04
string class 문자열 합치기  (0) 2024.06.03
to_string, to_wstring  (0) 2024.06.03
class 대신 struct 쓰는 이유  (0) 2024.05.31