Подтвердить что ты не робот

Каково значение по умолчанию для членов класса С++

Каковы значения по умолчанию для членов структуры и членов класса в С++ и как эти правила различаются (например, между классами/структурами/примитивами и т.д.)? Существуют ли ситуации, когда правила относительно значений по умолчанию отличаются?

4b9b3361

Ответ 1

В С++ нет различий между структурами и классами. Все они называются просто типами классов.

Члены типов классов не имеют значений по умолчанию в общем случае. Чтобы член класса мог получить детерминированное значение, он должен быть инициализирован, что может быть выполнено

  • Конструктор по умолчанию самого элемента
  • Список инициализаторов конструктора класса-оболочки
  • Явно заданный инициализатор для объекта входящего класса (который включает инициализацию инициализации инициализации и инициализацию).

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

Помимо вышеуказанных случаев, члены класса снова не имеют значений по умолчанию и изначально будут содержать непредсказуемые значения мусора.

Ответ 2

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

someClass * p = new someClass();