В C++ почему закрыта видимость по умолчанию для членов классов, но public для structs?видимость по умолчанию для элементов класса C++ C++
ответ
C++ был представлен как надмножество C. Структуры были перенесены с C, где семантика их членов была общедоступной. Существует много кода C, включая библиотеки, которые также хотели бы работать с C++, которые используют структуры. Классы были введены в C++, и, чтобы соответствовать философии OO инкапсуляции, их члены являются закрытыми по умолчанию.
Возможно для обратной совместимости с C-структурами. Таким образом, структуры, объявленные в C-коде, будут продолжать работать одинаково при использовании в коде C++.
Поскольку класс является обычным способом ориентации объектов, что означает, что переменные-члены должны быть частными и иметь общедоступные аксессоры - это полезно для создания low coupling. Структуры, с другой стороны, должны быть совместимы с C-структурами, которые всегда являются общедоступными (в C нет понятия public и private) и не используют accessor/mutators.
- 1. C# по умолчанию видимость свойств
- 2. C#: видимость элементов управления
- 3. UML-видимость по умолчанию
- 4. По умолчанию видимость методов класса в PHP
- 5. По умолчанию инициализация элементов данных класса в C++ 11
- 6. Какова видимость класса по умолчанию в PHP?
- 7. Видимость элементов по ID
- 8. Изменение шаблонов элементов Visual C++ по умолчанию
- 9. Проблемы с конструктором класса по умолчанию C++
- 10. C++ производного класса конструктор по умолчанию
- 11. переменные класса C++ и построение по умолчанию
- 12. C++: значения по умолчанию в элементе класса
- 13. Значение по умолчанию используется внутри класса C++
- 14. C++ Пользовательское событие для элементов управления по умолчанию в Qt
- 15. Каковы значения по умолчанию для элементов структуры в C?
- 16. Видимость метода в C#
- 17. Значения по умолчанию для неявного конструктора по умолчанию в C++
- 18. Видимость/доступность макетов по умолчанию для Android
- 19. C# по умолчанию ключевое слово по умолчанию на C++?
- 20. Как вы определяете свойство по умолчанию для класса C++?
- 21. Значение по умолчанию для определяемого пользователем класса в C#
- 22. Объект-c метод init по умолчанию для класса?
- 23. Модификатор доступа по умолчанию для класса и переменной в C#?
- 24. В инициализаторе класса по умолчанию для элемента массива C++ 11
- 25. Что такое значение по умолчанию для членов класса C++
- 26. значения по умолчанию для члена класса в C++
- 27. Модификатор доступа по умолчанию для класса в C#
- 28. возврата по умолчанию ToString() для экземпляра класса C#
- 29. переопределить по умолчанию новый оператор для массива класса C#
- 30. Значение по умолчанию в HashMap для пользовательского класса в C++
Ну, если честно, для инкапсуляции не обязательно быть закрытым для всех членов. С инсталляцией C++ методы доступа могут быть очень дешевыми, но на многих языках ООП, учитывая накладные расходы на вызов функции, люди, как правило, используют открытый доступ, поскольку он дешевле. Для более точного контроля можно использовать объявления свойств, если их поддержка поддерживает его. Однако в собственном коде изменения переменных отслеживания сложнее, чем управляемые языки, поэтому имеет смысл установить атрибуты через одну точку в коде. – progician