最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++枚舉類型enum與enum class的使用

 更新時(shí)間:2020年08月20日 14:18:13   作者:冬瓜~  
這篇文章主要介紹了C++枚舉類型enum與enum class的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一.關(guān)于枚舉類型

1. 什么是枚舉類型?

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

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

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

舉個(gè)例子:

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

enum Sex
{
 Girl,  
 Boy 
};

這時(shí),你不可以再使用一個(gè)枚舉去定義Girl 和 Boy了,如:

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

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

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

enum class Sex
{
 Girl,  
 Boy 
};

enum class Student
{
 Girl,  
 Boy 
};

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

二.枚舉類型enum的使用

定義:

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

聲明:

Sex a=Girl;

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

三.枚舉類型enum class的使用

定義:

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

如:

enum class Sex
{
 Girl,  
 Boy 
};

聲明:

Sex a=Sex::Gril;

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

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

到此這篇關(guān)于C++枚舉類型enum與enum class的使用的文章就介紹到這了,更多相關(guān)C++枚舉類型enum與enum class 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++實(shí)現(xiàn)正整數(shù)的四則運(yùn)算表達(dá)式

    C++實(shí)現(xiàn)正整數(shù)的四則運(yùn)算表達(dá)式

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)正整數(shù)的四則運(yùn)算表達(dá)式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • C語言編程中函數(shù)的基本學(xué)習(xí)教程

    C語言編程中函數(shù)的基本學(xué)習(xí)教程

    這篇文章主要介紹了C語言編程中函數(shù)的基本學(xué)習(xí)教程,其中著重講到了傳值調(diào)用與參數(shù),需要的朋友可以參考下
    2015-12-12
  • C++中register關(guān)鍵字舉例詳解

    C++中register關(guān)鍵字舉例詳解

    register用來聲明變量,然后聲明出來的變量是直接放在cpu的寄存器當(dāng)中,而非就是通過內(nèi)存尋址訪問,這樣效率更高,下面這篇文章主要給大家介紹了關(guān)于C++中register關(guān)鍵字的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • C語言中不定參數(shù)?...?的語法以及函數(shù)封裝

    C語言中不定參數(shù)?...?的語法以及函數(shù)封裝

    不定參數(shù)是指函數(shù)可以接收不確定個(gè)數(shù)的參數(shù),下面這篇文章主要給大家介紹了關(guān)于C語言中不定參數(shù)?...?的語法以及函數(shù)封裝的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • C++語言const 關(guān)鍵字使用方法圖文詳解

    C++語言const 關(guān)鍵字使用方法圖文詳解

    在類中,如果你不希望某些數(shù)據(jù)被修改,可以使用const關(guān)鍵字加以限定。const 可以用來修飾成員變量、成員函數(shù)以及對(duì)象
    2020-01-01
  • 簡(jiǎn)單了解C++常見編程問題解決方案

    簡(jiǎn)單了解C++常見編程問題解決方案

    這篇文章主要介紹了C++常見編程問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • C++動(dòng)態(tài)規(guī)劃中關(guān)于背包問題講解

    C++動(dòng)態(tài)規(guī)劃中關(guān)于背包問題講解

    可能有些讀者有接觸過動(dòng)態(tài)規(guī)劃,可能也有一些讀者以前完全不知道動(dòng)態(tài)規(guī)劃這個(gè)東西,別擔(dān)心,我這篇文章會(huì)為讀者做一個(gè)入門,好讓讀者掌握這個(gè)重要的知識(shí)點(diǎn)
    2023-03-03
  • C語言中enum關(guān)鍵字的實(shí)現(xiàn)示例

    C語言中enum關(guān)鍵字的實(shí)現(xiàn)示例

    這篇文章主要介紹了C語言中enum關(guān)鍵字的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Atom安裝配置C/C++詳細(xì)教程

    Atom安裝配置C/C++詳細(xì)教程

    Atom (一款開源的代碼編輯器)是github專門為程序員推出的一個(gè)跨平臺(tái)文本編輯器。這篇文章主要介紹了Atom安裝配置C/C++教程,需要的朋友可以參考下
    2020-05-05
  • C數(shù)據(jù)結(jié)構(gòu)之雙鏈表詳細(xì)示例分析

    C數(shù)據(jù)結(jié)構(gòu)之雙鏈表詳細(xì)示例分析

    以下是對(duì)c語言中的雙鏈表進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下
    2013-08-08

最新評(píng)論

汉沽区| 图片| 驻马店市| 玛纳斯县| 斗六市| 康保县| 汤阴县| 绥芬河市| 巴青县| 松桃| 淮滨县| 平山县| 彰武县| 大埔县| 长治县| 万荣县| 当涂县| 南岸区| 无极县| 长白| 平和县| 永嘉县| 广东省| 色达县| 土默特右旗| 和田市| 尚志市| 英德市| 乾安县| 中超| 子长县| 肃北| 大同县| 施秉县| 永济市| 独山县| 上栗县| 沾化县| 福建省| 内丘县| 弥渡县|