Я всегда думал, что следующий кодC++ 03: конструктор по умолчанию для построения типов в станде :: Карта
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 или когда их можно безопасно пропустить.
Возможный дубликат [std :: map default value для встроенного типа] (http://stackoverflow.com/questions/4523959/stdmap-default-value-for-build-in-type) –
помогает ли это ? http://stackoverflow.com/questions/7084831/difference-between-default-initialize-and-value-initialize-in-c03 – vulkanino