видимость по умолчанию членов класса/структуры C++

StackOverflow https://stackoverflow.com/questions/1247745

  •  12-09-2019
  •  | 
  •  

Вопрос

Почему в C++ видимость по умолчанию для членов классов является частной, а для структур — публичной?

Это было полезно?

Решение

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top