C++におけるenum classの目的は何ですか?

C++において、enum classは列挙型の新しい機能です。これにより列挙型にスコープが導入され、名前の衝突が回避され、より強力な型の安全性が提供されます。

従来のC++の列挙型では、列挙値はグローバルに可視であり、名前空間の制限がない。これは、異なるライブラリや名前空間で同じ列挙値を使用すると、列挙値の名前の衝突が発生する可能性がある。さらに、列挙型は整数型に暗黙的に変換されることがあり、誤った使用を引き起こす可能性がある。

enum classはこれらの問題を解決しました。それはスコープ指定を導入して、列挙型の値の名前が列挙型のスコープ内にあることを保証します。これにより、異なる列挙型が同じ名前を持つことができ、競合することがありません。さらに、enum classは整数型への暗黙的な変換を許可せず、明示的な型変換を使用する必要があります。

以下はenum classを使用したサンプルコードです:

enum class Color { Red, Green, Blue };

Color c = Color::Red;
// 不会发生隐式转换为整数类型
int i = static_cast<int>(c); // 正确
int j = c; // 错误

switch (c) {
    case Color::Red:
        // 处理红色
        break;
    case Color::Green:
        // 处理绿色
        break;
    case Color::Blue:
        // 处理蓝色
        break;
}

総括すると、enumクラスの役割は列挙型にスコープを導入し、名前の衝突を防ぎ、より強い型安全性を提供することです。

bannerAds