정의에 따라 기본 초기화는 다른 초기화가 지정되지 않은 경우 발생하는 초기화입니다. C ++ 언어 는 명시 적 이니셜 라이저를 제공하지 않은 모든 개체가 기본적으로 초기화 됨을 보장합니다 (C ++ 11 §8.5 / 11). 여기에는 std::array<T, N>
및 유형의 개체가 포함됩니다 T[N]
.
기본 초기화가 효과가없고 개체의 값을 결정되지 않은 상태로 두는 유형 (클래스가 아닌 배열 유형 (§8.5 / 6))이 있습니다. 결과적으로 이러한 유형을 가진 기본 초기화 된 객체 배열은 불확실한 값을 갖게됩니다. 예 :
int plain_int;
int c_style_array[13];
std::array<int, 13> cxx_style_array;
c 스타일 배열과 std::array
모두 불확정 값이있는 것처럼 불확정 값의 정수로 채워 plain_int
집니다.
모든 요소를 기본값으로 초기화하기 위해 모든 배열 (크기가 0 인 배열 포함)에서 작동하는 구문이 있습니까?
"기본값으로"라고 말하면 "모든 요소를 T{}
"로 초기화 "한다는 뜻 입니다. 그것은 default-initialization 이 아니라 value-initialization (8.5 / 7)입니다. 각 선언에 빈 이니셜 라이저를 제공하여 C ++ 11에서 값 초기화를 매우 쉽게 요청할 수 있습니다.
int plain_int{};
int c_style_array[13]{};
std::array<int, 13> cxx_style_array{};
차례로 모든 배열 요소의 값을 초기화하여 plain_old_int
, 두 종류의 배열의 모든 구성원이 0으로 초기화됩니다.
T x[N]
구문 과 동일 합니다.