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