Последнее обновление:2026-10-15
struct и class в C++¶
Об авторе:¶
Личный официальный аккаунт:

О struct в C и C++: см. struct那些事
В целом struct лучше рассматривать как реализацию структуры данных, а class — как реализацию объекта.
Различия:
Самое принципиальное различие — это управление доступом по умолчанию
Права доступа при наследовании по умолчанию: для struct они public, для class — private.
struct как реализация структуры данных имеет управление доступом к данным по умолчанию public, тогда как class как реализация объекта имеет управление доступом к переменным-членам по умолчанию private.
Частые вопросы¶
Единственное различие struct и class?¶
Доступ и наследование по умолчанию: struct — public, class — private. В остальном они в C++ полностью эквивалентны.
Может ли struct иметь конструкторы и виртуальные функции?¶
Да: struct в C++ — это класс со всеми возможностями, включая конструкторы, виртуальные функции и шаблоны.
Когда выбирать struct?¶
По соглашению — для простых агрегатов данных без инвариантов; при появлении инкапсуляции и инвариантов — class.
Похожие темы¶
- C++ чисто виртуальные функции и абстрактные классы | C++那些事
- C++ утверждения assert | C++那些事
- C++ битовые поля | C++那些事
- Реализация полиморфизма C++ на языке C | C++那些事
- C++ const подробно: константы, указатель на const и const-указатель | C++那些事
- C++ всё семейство const | C++那些事
- C++ оператор разыменования * | C++那些事
- C++ инициализация и присваивание | C++那些事
- C++ возврат нескольких значений | C++那些事
- C++ ключевое слово mutable | C++那些事