Я должен инициализировать простые членские переменные класса? [дубликат]

17
задан Frank 16 June 2010 в 12:09
поделиться

3 ответа

Нужно ли инициализировать простой класс переменные-члены,

Нет, у вас нет для инициализации переменных-членов. Если вы не инициализируете их, не предполагайте, что они будут иметь какое-либо значение.

Если вы создадите тестовую программу и проверите в отладчике, как инициализируются значения, вы можете увидеть, что они инициализированы как нули, но это не гарантируется. Значения инициализируются тем, что находится в памяти в стеке в этом месте.

или они гарантированно получат назначение в любом случае их значения по умолчанию?

Им не гарантируется присвоение какого-либо значения. Если у вас есть объекты-члены, для них будут вызываться конструкторы по умолчанию, но для типов POD инициализация по умолчанию отсутствует.

Даже если вам не нужно этого делать, рекомендуется инициализировать все членов вашего класса (чтобы избежать трудных для поиска ошибок и иметь явное представление инициализаций / вызовов конструктора ).

16
ответ дан 30 November 2019 в 13:53
поделиться

Да, это необходимо. Ваш объект будет размещен либо в стеке, либо в куче. У вас нет возможности узнать, какие значения содержит эта память, и среда выполнения не гарантирует вам обнуление этого значения, поэтому вы должны инициализировать переменную.

2
ответ дан 30 November 2019 в 13:53
поделиться

Прочтите это . Эта страница также полезна для многих других вопросов, которые могут возникнуть на пути изучения C ++.

В общем, вам не обязательно, но нужно. Полагаться на значения по умолчанию может действительно сложно. Также это делает код более понятным для других. Имейте в виду, что список инициализации не влияет на порядок, в котором инициализируются члены, который определяется порядком, в котором они объявлены в классе.

1
ответ дан 30 November 2019 в 13:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: