首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

從 Java 到 C++:枚舉類型用法差異深度解析

     編輯:C++ 入門

Java enum:功能豐富的類

Java enum 是特殊類,繼承 Enum,提供 values()、valueOf()、ordinal()、name() 等方法。枚舉常量是單例對象,可攜帶字段、方法、實現接口。

enum Move { LEFT, RIGHT, UP, DOWN }
Move m = Move.LEFT;
System.out.println(m.ordinal()); // 0
for (Move v : Move.values()) ...

C++ enum:本質是整型常量

非限定作用域 (C++98)

enum Move { LEFT, RIGHT, UP, DOWN };
Move m = LEFT; // 隱式轉 int
if (m == LEFT) ...
// 缺點:枚舉常量污染外部作用域,不能有同名常量

限定作用域 (C++11 enum class/struct)

enum class Move { LEFT, RIGHT, UP, DOWN };
Move m = Move::LEFT; // 必須加作用域
// 優點:強類型,不隱式轉 int,作用域隔離
// 可指定底層類型:enum class Move : char { ... };

關鍵差異總結

特性Java enumC++ enum class
類型本質類/對象強類型整數
方法/字段支持不支持 (C++20 可用 static 方法)
switch 支持支持支持
隱式轉 int否 (ordinal())否 (需 static_cast)
作用域枚舉類枚舉類名

遷移建議

  • Java 習慣 Move.LEFT → C++ 用 Move::LEFT。
  • 需攜帶數據/行為時,C++ 改用 struct + static const 實例或類層級結構。
  • 位掩碼操作用 enum class Flag : int { A=1, B=2 } 配合運算符重載。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved