.
04/10/2021
36
Различия.
В языке Си++ класс — это тип, объявленный с помощью class, struct или union.
Это означает, что в Си++ существуют только классы, и все правила для классов и структур одинаковы, за исключением явно указанных различий class vs struct.
Между классами и структурами существует только два различия
Контроль доступа к членам [class.access].
Члены класса, определенные с помощью ключевого слова class, по умолчанию являются частными, а члены класса, определенные с помощью ключевых слов struct или union, по умолчанию являются общедоступными.
Доступность базовых классов и членов базового класса [class.access.base].
Если базовый класс не имеет спецификатора доступа (private/protected/public), то базовый класс, определенный как struct, является public, а базовый класс, определенный как class, — private.
(Union также является классом, но он имеет много других отличий от class и struct, которые выходят за рамки данного вопроса).
Использование методов.
Существует распространенное мнение, что для «расово правильного ООП-классов» можно использовать только классы, что для структур данных можно использовать только структуры, и что структуры не должны иметь методов. Это просто предпочтение, которое должно быть исправлено в Руководстве по стилю кодирования.
В коротких примерах кода лучше использовать struct, а не private/public, если это не относится к сути проблемы YouTube API.
Члены struct и базовых классов по умолчанию являются общедоступными, а в классах по умолчанию — частными. Примечание: Базовые классы должны быть явно установлены на public, private или protected, а не полагаться на значения по умолчанию.
В остальном структуры и классы функционально эквивалентны.
На этом техническая непогрешимость заканчивается. В эмоциональном плане большинство разработчиков проводят сильное различие между классами и структурами amarozka.dev. Структуры ощущаются как куча открытых битов с минимальной инкапсуляцией и функциональностью. Классы, напротив, ощущаются как живые, дышащие, ответственные члены сообщества с интеллектуальными сервисами, сильными барьерами инкапсуляции и четко определенными интерфейсами. Большинство пользователей уже обладают этими ценностями, поэтому, если класс имеет мало методов и в целом пригодные для использования данные (а в хорошо спроектированных системах они есть!) , то следует использовать ключевое слово structure. ), то следует использовать ключевое слово structure.