91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++枚舉類型enum與enum class的使用方法是什么

發布時間:2020-08-21 10:04:52 來源:億速云 閱讀:3213 作者:小新 欄目:開發技術

這篇文章主要介紹C++枚舉類型enum與enum class的使用方法是什么,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

一.關于枚舉類型

1. 什么是枚舉類型? 

答:如果一個變量只有幾種可能的值,那么就可以定義為枚舉類型,比如:性別只有男和女,那么就可以將性別定義為一種枚舉類型,其中男和女就是性別所包含的變量。所謂”枚舉”是指將變量的值一一列舉出來,變量的值只能在列舉出來的值的范圍內。在C++中,枚舉類型分為不限定作用域(enum)和限定作用域(enum class)。

2. enum與enum class的區別?(為什么需要限定作用域?)

答:枚舉作用域是指枚舉類型成員名字的作用域,起自其聲明之處,終止枚舉定義結束之處。enum與class enum區別在于是否限定其作用域。C語言規定,枚舉類型(enum)的成員的可見范圍被提升至該枚舉類型所在的作用域內。這被認為有可能污染了外部的作用域,為此,C++11引入了枚舉類(enum class)解決此問題。

舉個例子:

通常情況下,我們定義一個枚舉類型:

enum Sex
{
 Girl,  
 Boy 
};

這時,你不可以再使用一個枚舉去定義Girl 和 Boy了,如:

// 錯誤,編譯器提示 Girl,Boy重定義
enum Student
{
 Girl,  
 Boy 
};

編譯錯誤的原因在于Sex與Student都處在同一作用域下,成員變量重定義。

這便體現C++11引入枚舉類(enum class)的重要性,enum class能夠有效對枚舉作用域進行限定,避免了枚舉成員的重定義。

enum class Sex
{
 Girl,  
 Boy 
};

enum class Student
{
 Girl,  
 Boy 
};

int main(int argc, char *argv[])
{
 Sex a = Sex::Gril; 
 Student b = Student::Gril;
 //兩者處于不同作用域下,不會重定義
}

二.枚舉類型enum的使用

定義:

enum /*枚舉類型*/ 
{
 /*枚舉成員*/,  
 /*枚舉成員*/, 
 /*枚舉成員*/  
};
如:
enum Sex
{
 Girl,  
 Boy 
};

聲明:

Sex a=Girl;

注意:
1.枚舉中每個成員(標識符)結束符是“,”而不是”;” 最后一個成員可省略”,”
2.初始化時可以賦負數,以后的標識符仍依次加1。
3.枚舉變量只能取枚舉說明結構中的某個標識符常量。
4.在外部可以對枚舉變量進行賦值,但需要進行類型轉換。
5.枚舉常數可以隱式轉換為int,但是int不可以隱式轉換為枚舉值。
6.為枚舉中的每個名稱分配一個整數值,該值與其在枚舉中的順序相對應。默認情況下,第一個值分配0,下一個值分配1,依次類推,但也可以顯示設置枚舉名稱的值。
7.枚舉值可以用來作判斷比較。

三.枚舉類型enum class的使用

定義:

enum class/*枚舉類型*/ 
{
 /*枚舉成員*/,  
 /*枚舉成員*/, 
 /*枚舉成員*/  
};

如:

enum class Sex
{
 Girl,  
 Boy 
};

聲明:

Sex a=Sex::Gril;

枚舉定義將被限制在枚舉作用域內,并且不能隱式轉換為整數類型,但是可以顯式轉化為整數類型,如下:

enum class Sex
{
 Girl,  
 Boy 
};
int main(int argc, char *argv[])
{
  Sex a=Sex::Gril;
  int d1 =a; // 錯誤,無法從“Girl”隱式轉換為“int”。
 int d2 = int(a); // 正確,顯示將enum class轉換為整數
 return 0;
}

以上是C++枚舉類型enum與enum class的使用方法是什么的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

富锦市| 神木县| 石家庄市| 阜康市| 金坛市| 筠连县| 开封市| 水富县| 进贤县| 辽中县| 宜良县| 潜山县| 社会| 洞口县| 江阴市| 黑水县| 稷山县| 中山市| 广西| 宁波市| 象州县| 苗栗县| 义乌市| 海丰县| 盐源县| 陕西省| 墨竹工卡县| 子长县| 蓝山县| 长垣县| 福清市| 灵台县| 平邑县| 德惠市| 当雄县| 上蔡县| 阳城县| 赤水市| 西丰县| 新晃| 柳河县|