C++ классы и структуры
В чём разница между ними, кроме того, что в классах по умолчанию всё закрыто, а в структурах открыто?
В чём разница между ними, кроме того, что в классах по умолчанию всё закрыто, а в структурах открыто?
Структуры имеют обратную совместимость с Си.
Структура содержит только данные, именуемые полями.
В классах это называется свойствами объекта.
Но класс помимо свойств содержит в себе методы (описания или определения функций) и события (описания и обработчики событий) .
Всё это хранится внутри класса как целостная структура, но уже не данных, а структура объекта. На основе описания класса как переменной создаются в памяти объекты. В момент создания объекта (или экземпляра класса) отводится память и на неё создаётся ссылка. Доступ к объекту осуществляется через указатель-переменную, а внутри объекта через внутренние ссылки (указатели или смещения) .
Классы закрыты по умолчанию по той причине, что основные классы в среде разработчика, уже готовы к работе, представляют закрытое пространство имен, такое, которое не мешает использовать любые идентификаторы для других целей. Если программист пожелает, он может сделать отдельные детали доступными, но он знает куда вмешивается и на нём лежит ответственность за содеянное.
Обычно полная структура класса может оставаться программисту неизвестной, а уж если он начинает в неё вмешиваться, то должен изучать.
В классах ещё и методы (функции, обрабатывающие переменные класса) инкапсулированны (в общей оболочке) . А так, я ещё мал, что бы такую разницу определить.)
ИМХО больше ни в чем кроме открыто/закрыто разницы в плюсах нет.
А про совместимость с "С" - плюсы считают структуры из Си своими, но структуры из плюсов Си не поймет.