亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++11 強(qiáng)類型枚舉相關(guān)總結(jié)

 更新時(shí)間:2021年02月26日 11:03:33   作者:多半是條廢龍  
這篇文章主要介紹了C++11 強(qiáng)類型枚舉的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用c++11,感興趣的朋友可以了解下

枚舉就是定義一個(gè)類別,并且窮舉統(tǒng)一類別下的個(gè)體以供代碼使用。

C++98 枚舉存在的缺陷:

  • 無(wú)論是具名枚舉的名字還是枚舉類型中的成員,都是全局范圍的,其作用域是全局的。 如果在不同的枚舉中定義了相同的枚舉成員,則會(huì)出現(xiàn)重復(fù)聲明(redeclaration)錯(cuò)誤。
enum PUBLIC_COLOR { RED, YELLOW, GREEN };
enum PRIVATE_COLOR { RED, BLACK, PURPLE };  // RED 重定義
enum PUBLIC_COLOR { WHITE, GRAY };				// PUBLIC_COLOR 重定義

int main() {
 int color = RED;

 cout << color << endl;
}

你可能會(huì)想到使用命名空間來(lái)封裝枚舉類型,但是如果其中的某個(gè)命名空間漏寫(xiě)了名字則會(huì)變成匿名空間,而匿名空間中的所有枚舉成員會(huì)默認(rèn)變成全局命名空間下的成員。因此這種方法是不合適的。

  • 枚舉中的成員被設(shè)計(jì)為常量數(shù)字的別名,因此可以隱式的轉(zhuǎn)換為 int 類型,但是這在某些時(shí)候是不被期望出現(xiàn)的。
  • 枚舉類型鎖占用的空間大小以及符號(hào)不確定。

C++11 中的強(qiáng)枚舉類型語(yǔ)法格式

enum class enum_name: elem_type { elem1, elem2, ... };

C++11 強(qiáng)枚舉類型的優(yōu)點(diǎn)

  • 強(qiáng)作用域,強(qiáng)類型枚舉成員的名稱不會(huì)被輸出到其父作用域空間。
enum class PUBLIC_COLOR { RED, GREEN, BLACK }; // ok
enum PRIVATE_COLOR { RED, PURPLE, PINK = 1 }; // ok
  • 轉(zhuǎn)換限制,強(qiáng)類型枚舉成員的值不可以與整形隱式地相互轉(zhuǎn)換。
enum class PUBLIC_COLOR { RED, GREEN, BLACK };
enum PRIVATE_COLOR { RED, PURPLE, PINK = 1 };

if (PUBLIC_COLOR::GREEN == 1) {  // errror: 未定義可接受的類型轉(zhuǎn)換
 cout << "color1 == 1" << endl;
}

if (PRIVATE_COLOR::PURPLE == 1) { // ok
 cout << "color2 == 1" << endl;
}
  • 可以指定底層類型。強(qiáng)類型枚舉默認(rèn)的底層類型為 int,但也可以顯式地指定底層類型。
enum class PUBLIC_COLOR: char { RED, GREEN, BLACK };
enum PRIVATE_COLOR: int { RED, PURPLE, PINK };

cout << sizeof(PUBLIC_COLOR::GREEN) << endl;		// 1
cout << sizeof(PRIVATE_COLOR::PURPLE) << endl;		// 4
  • 不可能對(duì)不同的枚舉類型的枚舉值進(jìn)行比較。但相同枚舉值之間如果指定的值相同,那么可以進(jìn)行比較。
enum class PUBLIC_COLOR { RED, GREEN, BLACK };
enum PRIVATE_COLOR { RED, PURPLE, PINK = 1 };

if (PUBLIC_COLOR::GREEN == PRIVATE_COLOR::PURPLE) {  // errror
 cout << "PUBLIC_COLOR::GREEN == PRIVATE_COLOR::PURPLE" << endl;
}

if (PRIVATE_COLOR::PURPLE == PRIVATE_COLOR::PINK) {  // ok
 cout << "PRIVATE_COLOR::PURPLE == PRIVATE_COLOR::PINK" << endl;
}
  • 如果想要輸出枚舉值可以進(jìn)行強(qiáng)制類型轉(zhuǎn)換
enum class PUBLIC_COLOR: char { RED, GREEN, BLACK };
enum PRIVATE_COLOR: int { RED, PURPLE, PINK };

cout << static_cast<int>(PUBLIC_COLOR::RED) << endl;		// 0
cout << static_cast<int>(PRIVATE_COLOR::PURPLE) << endl;	// 1

以上就是C++11 強(qiáng)類型枚舉相關(guān)總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于C++11 強(qiáng)類型枚舉的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C/C++ 中 void*從概念到實(shí)戰(zhàn)深度解析

    C/C++ 中 void*從概念到實(shí)戰(zhàn)深度解析

    本文主要介紹了C/C++中的void*類型,從概念、特性、用途到實(shí)戰(zhàn)規(guī)范進(jìn)行了全面拆解,void*是一種通用指針,可以指向任意類型的數(shù)據(jù),但需要顯式轉(zhuǎn)換以使用,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • C++連接數(shù)據(jù)庫(kù)SqlServer、MySql、Oracle、Access、SQLite、PostgreSQL、MongoDB、Redis

    C++連接數(shù)據(jù)庫(kù)SqlServer、MySql、Oracle、Access、SQLite、PostgreSQL、Mong

    C++是一種通用的編程語(yǔ)言,可以使用不同的庫(kù)和驅(qū)動(dòng)程序來(lái)連接各種數(shù)據(jù)庫(kù),以下是一些示例代碼,演示如何使用?C++?連接?SQL?Server、MySQL、Oracle、ACCESS、SQLite?、?PostgreSQL、MongoDB、Redis數(shù)據(jù)庫(kù)
    2024-08-08
  • 利用C語(yǔ)言實(shí)現(xiàn)掃雷游戲

    利用C語(yǔ)言實(shí)現(xiàn)掃雷游戲

    這篇文章主要為大家詳細(xì)介紹了利用C語(yǔ)言實(shí)現(xiàn)掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • C語(yǔ)言柔性數(shù)組詳解

    C語(yǔ)言柔性數(shù)組詳解

    這篇文章主要介紹了C語(yǔ)言柔性數(shù)組,通過(guò)實(shí)例分析了不完整類型、結(jié)構(gòu)體及柔性數(shù)組等概念,需要的朋友可以參考下,希望能夠給你帶來(lái)幫助
    2021-10-10
  • C語(yǔ)言實(shí)現(xiàn)跨文件傳輸數(shù)據(jù)的幾種方式

    C語(yǔ)言實(shí)現(xiàn)跨文件傳輸數(shù)據(jù)的幾種方式

    C語(yǔ)言是一種強(qiáng)大的、通用的編程語(yǔ)言,常用于系統(tǒng)級(jí)編程,包括硬件交互,如中斷處理和數(shù)據(jù)采集,在本文中,我們將深入探討如何使用C語(yǔ)言進(jìn)行跨文件數(shù)據(jù)傳輸,文中有相關(guān)的代碼供大家參考,需要的朋友可以參考下
    2024-08-08
  • 詳解Qt如何實(shí)現(xiàn)一鍵加載qm文件

    詳解Qt如何實(shí)現(xiàn)一鍵加載qm文件

    這篇文章主要為大家詳細(xì)介紹了Qt實(shí)現(xiàn)一鍵加載qm文件的相關(guān)方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考下
    2024-04-04
  • C語(yǔ)言float內(nèi)存布局示例詳解

    C語(yǔ)言float內(nèi)存布局示例詳解

    這篇文章主要為大家介紹了C語(yǔ)言float內(nèi)存布局示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • 一文詳解C++的程序流程控制

    一文詳解C++的程序流程控制

    這篇文章主要介紹了一文詳解C++的程序流程控制,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • C++標(biāo)準(zhǔn)模板庫(kù)string類的介紹與使用講解

    C++標(biāo)準(zhǔn)模板庫(kù)string類的介紹與使用講解

    今天小編就為大家分享一篇關(guān)于C++標(biāo)準(zhǔn)模板庫(kù)string類的介紹與使用講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12
  • C語(yǔ)言實(shí)現(xiàn)linux網(wǎng)卡檢測(cè)精簡(jiǎn)版

    C語(yǔ)言實(shí)現(xiàn)linux網(wǎng)卡檢測(cè)精簡(jiǎn)版

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)linux網(wǎng)卡檢測(cè)的精簡(jiǎn)版,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06

最新評(píng)論