日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > > 充電吧
[導(dǎo)讀]一.傳統(tǒng)枚舉類型的缺點(diǎn)1.作用域沖突傳統(tǒng)C++中枚舉元素被暴漏在外層作用域中,這樣若是同一作用域下有兩個(gè)不同的枚舉類型,但含有相同的枚舉元素,就會(huì)產(chǎn)生沖突。enum?EnumOne { ????A?=

一.傳統(tǒng)枚舉類型的缺點(diǎn)
1.作用域沖突
傳統(tǒng)C++中枚舉元素被暴漏在外層作用域中,這樣若是同一作用域下有兩個(gè)不同的枚舉類型,但含有相同的枚舉元素,就會(huì)產(chǎn)生沖突。

enum?EnumOne
{
????A?=?1,
????B?=?2
};

enum?EnumTwo
{
????A?=?1,
????C?=?2
};

error C2365: “A”: 重定義;以前的定義是“枚舉數(shù)”
2.無(wú)關(guān)的枚舉元素可以比較
另外一個(gè)缺陷是傳統(tǒng)枚舉類型的枚舉元素總是被隱式轉(zhuǎn)換為整形,這就使得毫無(wú)關(guān)系的兩個(gè)枚舉類型的枚舉元素可以進(jìn)行比較。

enum?EnumOne
{
????A?=?1,
????B?=?2
};

enum?EnumTwo
{
????C?=?1,
????D?=?2
};

int?main()
{
????if?(EnumOne::A?==?EnumTwo::C)//?直接寫A==C也行
????{
??????????cout?<<?"equals"?<<?endl;//?輸出equals
????}

????if?(EnumOne::A?==?1)
????{
??????????cout?<<?"equals?too"?<<?endl;//?輸出equals?too
????}

????system("pause");
????return?0;
}

二.強(qiáng)類型枚舉
強(qiáng)類型枚舉(Strongly-typed enums),號(hào)稱枚舉類型,是C++11中的新語(yǔ)法,用以解決傳統(tǒng)枚舉類型存在的缺點(diǎn)。
它不會(huì)將枚舉元素暴露到外層作用域中,也不會(huì)隱式轉(zhuǎn)換為整形,并且可以擁有用戶指定的元素類型(傳統(tǒng)枚舉也增加了這個(gè)性質(zhì))
強(qiáng)類型枚舉使用enum class語(yǔ)法來(lái)聲明,如下:

enum?class?EnumOne
{
????A?=?1,
????B?=?2
};

enum?class?EnumTwo
{
????A?=?1,
????C?=?2
};

此時(shí)這兩個(gè)枚舉即使有同名元素A,編譯器不會(huì)報(bào)錯(cuò)了。
但是這兩個(gè)枚舉中枚舉元素的比較,或者枚舉元素與整數(shù)的比較都會(huì)報(bào)錯(cuò)。例如:

enum?class?EnumOne
{
????A?=?1,
????B?=?2
};

enum?class?EnumTwo
{
????A?=?1,
????D?=?2
};

int?main()
{
????if?(EnumOne::B?==?EnumTwo::D)//?A和B必須帶上作用域,不能直接寫成A==B,此時(shí)單獨(dú)的A或B不再有意義
????{
??????????cout?<<?"equals"?<<?endl;//?輸出equals
????}


????if?(EnumOne::B?==?2)
???{
??????????cout?<<?"equals?too"?<<?endl;//?輸出equals?too
???}
????system("pause");
????return?0;
}

兩處相等判斷都在編譯時(shí)報(bào)錯(cuò):error C2678: 二進(jìn)制“==”: 沒(méi)有找到接受“EnumOne”類型的左操作數(shù)的運(yùn)算符(或沒(méi)有可接受的轉(zhuǎn)換)
三.比較
傳統(tǒng)枚舉類型和強(qiáng)枚舉類型都支持用戶指定元素類型(默認(rèn)為int類型)

enum?EnumA?:?int?{?A,B};
enum?class?EnumB?:?long?{C,D};

還有一點(diǎn)值得說(shuō)明的是C++11中枚舉類型的前置聲明也是可行的,比如:

enum?Enum1;?????????????????????//?不合法
enum?Enum2?:?unsigned?int;??????//?合法的?C++11
enum?class?Enum3;???????????????//?合法的?C++11,默認(rèn)為int?
enum?class?Enum4?:?unsigned?int;//?合法的?C++11
enum?Enum2?:?unsigned?short;????//?不合法的?C++11,Enum2已被聲明為unsigned?int


enmu?class?Clolor:char;???//前置聲明枚舉??
void?Foo(Color*p);????????//前置聲明的使用??
//....................??
enum?class?Color:char{RED,GREEN,BLACK,WHITE};?//前置聲明的定義

四.一個(gè)例子


#includeusing?namespace?std;
int?main()
{
????enum?class?Status?{Ok,?Error};
????enum?struct?Status2{Ok,?Error};
????Status?flag?=?Status::Ok;
????if(flag?==?Status::Ok)
????{
?????????cout?<<?"equals"?<<endl;//equals
????}

????//int?n=flag;???????????????????//?錯(cuò)誤,不會(huì)隱式轉(zhuǎn)換為int
????int?n?=?static_cast(flag);?//?正確,?n?=?0,枚舉元素默認(rèn)從0開始
????enum?class?EnumOne?:?char?{?A?=?1,?B?=?2};???//指定枚舉的底層數(shù)據(jù)類型
????enum?class?EnumTwo?:?unsigned?int?{?C?=?1,?D?=?2,?Dbig?=?0xFFFFFFF0U?};

????cout?<<?sizeof(EnumOne::A)?<<?endl;??????????//?1
????cout?<<?(unsigned?int)EnumTwo::Dbig?<<?endl;?//?編譯器輸出一致,4294967280
????cout?<<?sizeof(EnumTwo::D)?<<?endl;??????????//?4
????cout?<<?sizeof(EnumTwo::Dbig)?<<?endl;???????//?4

????system("pause");
????return?0;
}





本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過(guò)流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問(wèn)題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問(wèn)題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問(wèn)題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉