Перейти к содержанию

Последнее обновление:2026-10-15

struct и class в C++

Об авторе:

Личный официальный аккаунт:

struct и class в C++: ключевые различия | 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.

Похожие темы

Комментарии