Страницы

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

четверг, 28 ноября 2019 г.

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

#c++ #c++_faq


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


Ответы

Ответ 1



Отличия В С++ классом называются типы объявленные с помощью 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, если они не относятся к сути проблемы.

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

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