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

Видимость по умолчанию для элементов класса С++ С++

В С++ почему private является видимой по умолчанию для членов классов, но public для structs?

4b9b3361

Ответ 1

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

Ответ 2

Поскольку класс является обычным способом ориентации объектов, что означает, что переменные-члены должны быть частными и иметь общедоступные аксессоры - это полезно для создания low муфта. Структуры, с другой стороны, должны быть совместимы с C-структурами, которые всегда являются общедоступными (в C нет понятия public и private) и не используют accessor/mutators.

Ответ 3

Возможно для обратной совместимости с C-структурами. Таким образом, структуры, объявленные в C-коде, будут продолжать работать одинаково при использовании в коде С++.