@ArtemITS
programmer developer

При запуске C++ программы, какие типы переменных инициируются нулями?

Добрый день.

Это правда, что при создании объекта класса, его поля содержат мусор ?

Я хочу иметь “шпаргалку” : Какие сущности инициируется автоматом, а какие надо устанавливать вручную.
Помогите составить:
1) Локальные переменные функции ?
2) Статические переменные в функции, или в файле ?
3) Поля класса ?
4) Статические Поля класса ?
5) Глобальные переменные ?
6) Структуры/Массивы как переменные файла ?
7) Структуры/Массивы как поля класса ?
8) Структуры/Массивы как локальные переменные функции ?
9) Память выделенная через new ?
10) ...
11) ... что еще записать в шпаргалку ?

Cпасибо.
  • Вопрос задан
  • 129 просмотров
Решения вопроса 1
myjcom
@myjcom Куратор тега C++
Я хочу иметь “шпаргалку”

Имейте
а да
какие типы переменных инициируются нулями?

https://en.cppreference.com/w/cpp/language/default...
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
gbg
@gbg Куратор тега C++
Любые ответы на любые вопросы
Только те, которые инициализируются явным образом.
Ответ написан
Adamos
@Adamos
11. Инициализируй все переменные, не рассчитывая, что компьютер сделает это за тебя.
Тебе это ничего не стоит, а пренебрежение может стоить долгих часов отладки.
Например, для конвертирования строки в число wxWidgets имеет дивную функцию:
wxString number(wxT("145"));
long value;
if(!number.ToLong(&value)) { /* error! */ }

Это пример из документации. Фокус в том, что если функция вернула ошибку - в value так и остается мусор, в отличие от стандартного atol, который таки считает нечисловое значение нулевым.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы