Каковы значения по умолчанию для членов структуры и членов класса в C++, и как эти правила отличаются (например, между классами/структурами/примитивами/и т.д.)? Есть ли обстоятельства, где правила о значениях по умолчанию отличаются?
В этом отношении в C ++ нет различий между структурами и классами. Все они называются просто типами классов .
Члены типов классов в общем случае не имеют значений по умолчанию. Чтобы член класса получил детерминированное значение, он должен быть инициализирован , что может быть выполнено с помощью
Кроме того, все объекты со статической продолжительностью хранения инициализируются нулем при запуске программы.
Помимо вышеперечисленных случаев, члены класса, опять же, не имеют значений по умолчанию и изначально будут содержать непредсказуемые значения мусора.
Да, существует один. Если вы инициализируете объект конструктором по умолчанию и используете круглые скобки, тогда члены POD будут инициализированы нулем:
someClass * p = new someClass();