2009-08-08 3 views

ответ

61

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

+0

Ну, если честно, для инкапсуляции не обязательно быть закрытым для всех членов. С инсталляцией C++ методы доступа могут быть очень дешевыми, но на многих языках ООП, учитывая накладные расходы на вызов функции, люди, как правило, используют открытый доступ, поскольку он дешевле. Для более точного контроля можно использовать объявления свойств, если их поддержка поддерживает его. Однако в собственном коде изменения переменных отслеживания сложнее, чем управляемые языки, поэтому имеет смысл установить атрибуты через одну точку в коде. – progician

1

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

7

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

Смежные вопросы