Статьи

Учебные материалы по языку C++ — от основ до продвинутых тем

Структуры и перечисления

Страница 22 из 43 · 2026-10-25 · 1 мин чтения

Структуры и перечисления

Структура

struct объединяет несколько полей под одним типом:

struct Player {    std::string name;    int health = 100;    float speed = 1.0f;};Player player{"Knight", 80, 2.5f};std::cout << player.name << '\n';

По умолчанию члены struct открыты (public). У class доступ по умолчанию закрытый (private). В остальном обе конструкции поддерживают методы, конструкторы, наследование и другие возможности классов.

Инициализация

Предпочитай явную инициализацию. Фигурные скобки помогают обнаруживать некоторые сужающие преобразования:

struct Point {    int x{};    int y{};};Point origin{};

Поля с {} получают начальные значения соответствующего типа. Это особенно важно для встроенных числовых типов.

enum class

Перечисление задаёт конечный набор смысловых значений:

enum class Direction {    North,    South,    West,    East};Direction direction = Direction::North;

enum class предпочтительнее старого enum в большинстве новых проектов: имена значений не попадают напрямую в окружающую область видимости, а преобразования более строгие.

Методы в структуре

struct Rectangle {    float width{};    float height{};    float Area() const {        return width * height;    }};

Метод const обещает не изменять состояние объекта через не-константный this.

Когда использовать

Структуры подходят для небольших моделей данных и типов-значений. Если объект должен защищать инварианты, контролировать изменение состояния или управлять ресурсами, может быть уместен класс с закрытыми полями.

Итог

Создавай собственные типы, когда несколько значений образуют одну понятную сущность. Используй enum class для состояний и категорий, а инициализацию делай явной.