您當前的位置:首頁 > 文化

列舉型別變數與整數型別變數有什麼區別?

作者:由 鋼鐵之錘 發表于 文化時間: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。

最後:我是抱著知道什麼叫美劇型別而來,著實失望。

標簽: enum  int  Mon  作用域  隱式