一、簡介
enum是一種數據類型,常用於定義一組命名常量。使用enum關鍵字可以將一組常量打包成一個集合,使得代碼的可讀性和可維護性大大提高。
以下是一個使用enum定義星期幾的例子:
enum Weekday {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
};
在這個例子中,Weekday就是一個枚舉類型,它包含了七個常量:MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY和SUNDAY。它們可以在程序中被使用,例如:
#include <iostream>
using namespace std;
enum Weekday {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
};
int main() {
Weekday day = MONDAY;
switch (day) {
case MONDAY:
cout << "Today is Monday" << endl;
break;
case TUESDAY:
cout << "Today is Tuesday" << endl;
break;
// ...
default:
cout << "Invalid day" << endl;
break;
}
return 0;
}
上面的程序會輸出「Today is Monday」,因為我們將day初始值設為MONDAY。
二、enum常量的默認值
當我們聲明一個枚舉類型時,如果沒有為其中的常量賦值,那麼它們的默認值會從0開始自動遞增。例如:
enum Numbers {
ONE,
TWO,
THREE
};
其中,ONE的值為0,TWO的值為1,THREE的值為2。
我們也可以手動為枚舉常量賦值,這時未被賦值的常量會自動遞增。例如:
enum Numbers {
ONE = 1,
TWO,
THREE
};
其中,ONE的值為1,TWO的值為2,THREE的值為3。
三、enum的作用範圍
在C++中,枚舉類型是一種本地類型,它們的作用域是在它們被定義的命名空間中。例如,在函數內部定義的枚舉類型只能在該函數內部訪問。
如下例子所示:
#include <iostream>
using namespace std;
void foo() {
enum Fruit {
APPLE,
ORANGE,
BANANA
};
Fruit myFruit = APPLE;
cout << "My fruit is: " << myFruit << endl;
}
int main() {
foo();
// This will produce an error, myFruit is out of scope
// Fruit myFruit = APPLE;
return 0;
}
在函數foo()內部定義的Fruit類型只能在函數內部訪問。在函數外部定義的myFruit變數使用會導致編譯錯誤。
四、enum的可讀性
使用enum類型可以增強代碼的可讀性和可維護性,因為使用枚舉常量可以代替直接使用數字。
例如,下面的代碼可能會讓讀者感到困惑:
int result = someFunction();
if (result == 0) {
// Do something
} else if (result == 1) {
// Do something else
} else if (result == 2) {
// Do another thing
} else if (result == 3) {
// Do yet another thing
} else {
// Handle invalid result
}
我們可以使用枚舉類型:
enum Result {
SUCCESS,
ERROR1,
ERROR2,
ERROR3
};
Result result = someFunction();
if (result == SUCCESS) {
// Do something
} else if (result == ERROR1) {
// Do something else
} else if (result == ERROR2) {
// Do another thing
} else if (result == ERROR3) {
// Do yet another thing
} else {
// Handle invalid result
}
這種使用方式可以讓代碼更加易讀、易維護。
五、enum和switch
在C++中,switch語句可以使用枚舉類型。例如:
enum Color {
RED,
GREEN,
BLUE
};
int main() {
Color color = RED;
switch (color) {
case RED:
cout << "Color is red" << endl;
break;
case GREEN:
cout << "Color is green" << endl;
break;
case BLUE:
cout << "Color is blue" << endl;
break;
default:
cout << "Invalid color" << endl;
break;
}
return 0;
}
上述代碼會輸出「Color is red」。
結論
使用enum類型可以為程序提供更好的可讀性和可維護性。編程人員可以使用enum類型為常量賦予有意義的標識符,並避免使用未知含義的數字。
原創文章,作者:BEHX,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/145615.html
微信掃一掃
支付寶掃一掃