C++ 列舉型態(enumerated type)又稱enumeration簡稱enum,為可自訂一組常數及對應名稱的型態。
列舉中可定義多個以逗號分隔的列舉項目(enumerators),每一列舉項目實為一常數,而列舉物件僅代表一特定列舉項目的值。列舉的好處是其物件僅接收列舉項目並能以列舉項目判斷是否相等,藉此限定列舉項目其背後常數的範圍。
宣告enum
宣告enum的語法如下:
enum
- 宣告列舉型態的關鍵字。TypeName
- 列舉的名稱,習慣用UpperCamelCase
命名。ENUMERATOR1-3
- 列舉項目。習慣用UPPER_SNAKE_CASE
命名。
enum TypeName {
ENUMERATOR1,
ENUMERATOR2,
ENUMERATOR3,
...
};
例如下面定義一個enum型別Color
及其列舉項目RED
、BLUE
、GREEN
。
enum Color { RED, BLUE, GREEN };
Enum的值
列舉項目的值預設是從0開始依序遞增的整數,例如上面的RED
值為0、BLUE
值為1,以此類推。
main.cpp
#include <iostream>
using namespace std;
enum Color { RED, BLUE, GREEN };
int main() {
cout << Color::RED << endl; // 0
cout << Color::BLUE << endl; // 1
cout << Color::GREEN << endl; // 2
return 0;
}
宣告時可以明確設定列舉項目的值,而後面未設定的項目值為前一項的值遞增1。
main.cpp
#include <iostream>
using namespace std;
enum Color { RED = 2, BLUE, GREEN = 1 };
int main() {
cout << Color::RED << endl; // 2
cout << Color::BLUE << endl; // 3
cout << Color::GREEN << endl; // 1
return 0;
}
範例
下面範例宣告列舉Color
,並定義其變數color
值為BLUE
。列舉可直接以列舉項目判斷相等性。
main.cpp
#include <iostream>
using namespace std;
enum Color { RED, BLUE, GREEN };
int main() {
Color color{Color::BLUE};
if (color == Color::BLUE) {
cout << "color is blue" << endl;
}
switch (color) {
case Color::RED:
cout << "red" << endl;
break;
case Color::BLUE:
cout << "blue" << endl;
break;
case Color::GREEN:
cout << "green" << endl;
break;
default:
break;
}
return 0;
}
執行印出以下:
color is blue
blue
沒有留言:
張貼留言