Страницы

Поиск по вопросам

четверг, 4 октября 2018 г.

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

Чем class отличается от struct? Когда использовать одно, а когда другое?


Ответ

Отличия
В С++ классом называются типы объявленные с помощью class, struct или union
Это означает что в С++ есть только классы, и все правила для class и struct одинаковы, за исключением случаев где отличия указаны явно.
Отличий class от struct всего два
Member access control [class.access] Члены класса, определенного с помощью ключевого слова class, по умолчанию являются private. Члены класса, определенного с помощью ключевого слова struct или union, по умолчанию являются public Accessibility of base classes and base class members [class.access.base] При отсутствии спецификатора доступа (т.е. private/protected/public) у базового класса, базовый класс будет public если класс определен с помощью struct и private если класс определен с помощью class
(Хотя union и является классом, он имеет много других отличий от class и struct, что выходит за рамки этого вопроса.)
Использование
Есть популярное мнение, что для "расово правильных ООП классов" надо использовать только class, а для структур данных - только struct, и еще у struct не должно быть методов. Это не более чем вкусовщина, и подобные вещи должны быть закреплены в руководствах по стилю кодирования, как например это сделано в Google C++ Style Guide
В коротких примерах кода, предпочтительнее использовать struct, и не использовать private/public, если они не относятся к сути проблемы.

Комментариев нет:

Отправить комментарий