Чем class отличается от struct?

.
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.

Эта запись была опубликована в Uncategorized. Ссылка на новость здесь.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *