[*] Как часть последовательности инициализации значений для неклассовых типов и для членов типов инициализированных классов, которые не имеют конструкторов, включая инициализацию значений элементов агрегатов, для которых не предоставляется инициализаторы. Тип, начальным значением объекта является интегральная постоянная ноль, явно преобразованная в t. < /li>
Если t-тип класса, не сознав, все базовые классы и нестатические элементы данных нулевые инициализированы, а вся прокладка инициализируется до нулевых бит. Конструкторы, если таковые имеются, игнорируются. < /Li>
...
< /ul>
< /blockquote>
Найдут ссылки на нулевую инициализацию в инициализации стоимости, агрегат-инициализации и инициализации списка. Компиляторы, и их поведение кажется расходящимся. А вот и результаты: < /p>
дано: foo < /p>
Код: Выделить всё
struct Foo
{
char x;
int y;
char z;
};
< /code>
construct < /th>
g ++ < /th>
clang ++ < /th>
< /tr> < /br />
clang ++ < /th>
< /br />
< /th>
< /tr> < /br />
< /th>
/>
foo () < /td>
x:[----][0x42][0x43][0x44],v: 0Код: Выделить всё
x:[----][----][----][----],v: 0< /code> < /td>
< /tr>
< /td>
y:[----][----][----][----],v: 0Код: Выделить всё
y:[----][----][----][----],v: 0< /code> < /td>
< /tr>
< /td>
z:[----][0x4A][0x4B][0x4C],v: 0Код: Выделить всё
z:[----][----][----][----],v: 0< /code> < /td>
< /tr>
< /td>
Foo{}
x:[----][----][----][----],v: 0Код: Выделить всё
x:[----][0x42][0x43][0x44],v: 0< /code> < /td>
< /tr>
< /td>
y:[----][----][----][----],v: 0Код: Выделить всё
y:[----][----][----][----],v: 0< /code> < /td>
< /tr>
< /td>
z:[----][----][----][----],v: 0Код: Выделить всё
z:[----][0x4A][0x4B][0x4C],v: 0здесь [----] представляет байт, содержащий все биты 0, и [0x ..] значение для мусора. Оба foo () и foo {} являются инициализацией значения. Кроме того, foo {} является агрегатной инициализацией, с отсутствующими инициализаторами. Почему правило нулевой инициализации не запускается? Почему правило прокладки не запускается? 2: Также см.: Инициализирует ли C -структура. Применимо ли это?>
Подробнее здесь: https://stackoverflow.com/questions/709 ... ro-for-non
Мобильная версия