В С++ почему private является видимой по умолчанию для членов классов, но public для structs?
Видимость по умолчанию для элементов класса С++ С++
Ответ 1
С++ был введен как надмножество C. Структуры были перенесены из C, где семантика их членов была общедоступной. Существует много кода C, включая библиотеки, которые также хотели бы работать с С++, которые используют структуры. Классы были введены в С++, и, чтобы соответствовать философии OO для инкапсуляции, их члены по умолчанию являются закрытыми.
Ответ 2
Поскольку класс является обычным способом ориентации объектов, что означает, что переменные-члены должны быть частными и иметь общедоступные аксессоры - это полезно для создания low муфта. Структуры, с другой стороны, должны быть совместимы с C-структурами, которые всегда являются общедоступными (в C нет понятия public и private) и не используют accessor/mutators.
Ответ 3
Возможно для обратной совместимости с C-структурами. Таким образом, структуры, объявленные в C-коде, будут продолжать работать одинаково при использовании в коде С++.