C++ enum class | Scoped Enumerations Explained

C++ enum class | Scoped Enumerations Explained

이 글의 핵심

Why `enum class` replaces many plain enums: safety, scope, and explicit conversions.

What is enum class?

Scoped enumeration (enum class) is a strongly typed enum: enumerators live under the enum’s scope and do not implicitly convert to integers.

enum class Status { OK, Error, Pending };

Status s = Status::OK;
// int x = s;  // error
int x = static_cast<int>(s);

Compared to plain enum

Featureenumenum class
Implicit int conversionYesNo
Scoped enumeratorsNoYes
Name clashesCommonRare

Basic usage

enum class Color { Red, Green, Blue };

Color c = Color::Red;
if (c == Color::Red) { /* ... */ }

switch (c) {
    case Color::Red: break;
    case Color::Green: break;
    case Color::Blue: break;
}

Underlying type

enum class Small : std::uint8_t { A, B, C };
enum class Flags : std::uint32_t { Read = 1 << 0, Write = 1 << 1 };

Bit flags

enum class does not enable | by default; overload operators or use std::to_underlying (C++23) / static_cast for masks—see the full Korean article for operator examples.


  • Bit manipulation
  • explicit keyword

Keywords

C++, enum class, scoped enum, strong typing, C++11