видимость по умолчанию членов класса / структуры C ++ - PullRequest
49 голосов
/ 08 августа 2009

В C ++ почему private является видимостью по умолчанию для членов классов, но public для структур?

Ответы [ 3 ]

79 голосов
/ 08 августа 2009

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

9 голосов
/ 08 августа 2009

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

1 голос
/ 08 августа 2009

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

...