c ++ 03: конструктор по умолчанию для встроенных типов в std :: map

Я всегда думал, что следующий код

std::map<int, int> test;
std::cout << test[0] << std::endl;

напечатает случайное значение, потому что он создаст единичное значение внутри карты. Однако оказывается, что созданный int на самом деле всегда инициализируется нулем, И стандартные встроенные типы также инициализируются нулем при определенных обстоятельствах.

Возникает вопрос: когда выполняется инициализация нуля для стандартных типов (int / char / float / double / size_t)? Я почти уверен, что если я объявлю int i; в глуши, он будет содержать случайные данные.

P.S. Речь идет о стандарте C ++ 03. Причина вопроса в том, что теперь я больше не уверен, когда у меня есть для обеспечения инициализации для встроенных типов, таких как int / float / size_t, или когда это можно безопасно опустить.

5
задан Aman Aggarwal 28 February 2012 в 12:03
поделиться