, 또는C++에서 C 배열을 초기화하는 이러한 방법에는 차이점이 있습니까?
struct Window{ int a;};
int main()
{
Window* list[4] = { 0, 0, 0, 0 };
Window* list2[4] = {0};
Window* list3[4] = {};
Window* list4[4]{ 0, 0, 0, 0 };
Window* list5[4]{0};
Window* list6[4]{};
}
nullptr
나는 임의의 값으로 적어도 하나 명의 멤버를 초기화하는 경우 다른 사람들은 모두 내가 할, 그래서 만약 제로는, 초기화 것으로 알고 있습니다 :
int list[4] = { 6 };
첫 번째 구성원은 6
이되고 나머지는 모두 0으로 초기화됩니다. 그러나 나는 혼동 해요 :
int list[4]{0};
및
int list[4]{};
나는 초기화 기본 반대로 같은없이 선언 등호 직후 빈 구불 구불 한 괄호가 0 초기화를 무엇이라고한다고 가정하지만, 그래서 역시
int list[4]{0}
, 그렇지 않습니까? 여기에
std::initializer_list
이 숨겨져 있거나 포함되어 있지 않습니까? 나는 이것들이 non-POD 타입에만 사용되었다고 생각했기 때문에 여기서는
std::initializer_list
을 사용하지 않습니까?
이들은 모두 [집합 초기화] (http://en.cppreference.com/w/cpp/language/aggregate_initialization)의 다른 형태이며 동일한 최종 효과를가집니다. – Praetorian
[이 사이트] (http://en.cppreference.com/w/cpp/language/value_initialization)을 좋아합니다. [초기화 프로그램]에 대한 모든 것을 설명합니다. (http://en.cppreference.com/w/cpp/ 언어/list_initialization). – lakeweb
@lakeweb 감사합니다.오, C++ 03과 C++ 11의 차이점은 아주 미묘한 점입니다. – Zebrafish