列舉型別變數與整數型別變數有什麼區別?
作者:由 鋼鐵之錘 發表于 文化時間:2021-11-28
最初enum只是一個int外面的語法糖而已。現在一個enum其實也是一系列帶名的整數值,可以隱式轉換到int。但是這樣的話,作用域是從括號向外一層的,即在enum宣告的作用域內,而不是enum大括號的作用域。這是因為C沒有作用域的概念。而C++之後,為了區別“這種int一樣的enum”和真正的enum,C++添加了enum class型別,這一型別的作用域真正在enum的大括號之內並且不能隱式轉換int。
例如:
enum
Day
{
Sun
,
Mon
,
Tue
,
Web
,
Thr
,
Fri
,
Sat
};
enum
Day
day
=
Mon
;
//C++直接 Day day=Mon也可以
//此時Mon就是 (enum Day)1 而已
enum
class
Day
{
Sun
,
Mon
,
Tue
,
Web
,
Thr
,
Fri
,
Sat
};
Day
day2
=
Day
::
Mon
;
即:普通enum和int同體,而真正不能和int隱式等價的時候應該是enum class。
最後:我是抱著知道什麼叫美劇型別而來,著實失望。
上一篇:撥亂反正?學習的常識!