请问为什么枚举类优先于普通枚举?

为什么枚举类优先于普通枚举?

我听到一些人建议使用枚举在C+中,因为它们类型安全.

但这到底意味着什么?


30秒到达战场
浏览 969回答 3
3回答

HUX布斯

C+有两种enum:enum class埃斯平原enums下面是几个如何声明它们的示例:&nbsp;enum&nbsp;class&nbsp;Color&nbsp;{&nbsp;red,&nbsp;green,&nbsp;blue&nbsp;};&nbsp;//&nbsp;enum&nbsp;class &nbsp;enum&nbsp;Animal&nbsp;{&nbsp;dog,&nbsp;cat,&nbsp;bird,&nbsp;human&nbsp;};&nbsp;//&nbsp;plain&nbsp;enum两者有什么区别?enum class枚举数名称为本土化对于枚举和它们的值不隐式转换为其他类型(类似于另一种类型)enum或int)平原enums-其中枚举数名称与枚举的作用域相同,它们的值隐式转换为整数和其他类型。例子:enum&nbsp;Color&nbsp;{&nbsp;red,&nbsp;green,&nbsp;blue&nbsp;};&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;//&nbsp;plain&nbsp;enum&nbsp;enum&nbsp;Card&nbsp;{&nbsp;red_card,&nbsp;green_card,&nbsp;yellow_card&nbsp;};&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;//&nbsp;another&nbsp;plain&nbsp;enum&nbsp;enum&nbsp;class&nbsp;Animal&nbsp;{&nbsp;dog,&nbsp;deer,&nbsp;cat,&nbsp;bird,&nbsp;human&nbsp;};&nbsp;&nbsp; &nbsp;&nbsp;//&nbsp;enum&nbsp;classenum&nbsp;class&nbsp;Mammal&nbsp;{&nbsp;kangaroo,&nbsp;deer,&nbsp;human&nbsp;};&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;//&nbsp;another&nbsp;enum&nbsp;classvoid&nbsp;fun()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;examples&nbsp;of&nbsp;bad&nbsp;use&nbsp;of&nbsp;plain&nbsp;enums: &nbsp;&nbsp;&nbsp;&nbsp;Color&nbsp;color&nbsp;=&nbsp;Color::red; &nbsp;&nbsp;&nbsp;&nbsp;Card&nbsp;card&nbsp;=&nbsp;Card::green_card; &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;num&nbsp;=&nbsp;color;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;no&nbsp;problem &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(color&nbsp;==&nbsp;Card::red_card)&nbsp;//&nbsp;no&nbsp;problem&nbsp;(bad) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;<<&nbsp;"bad"&nbsp;<<&nbsp;endl; &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(card&nbsp;==&nbsp;Color::green)&nbsp;&nbsp;&nbsp;//&nbsp;no&nbsp;problem&nbsp;(bad) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;<<&nbsp;"bad"&nbsp;<<&nbsp;endl; &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;examples&nbsp;of&nbsp;good&nbsp;use&nbsp;of&nbsp;enum&nbsp;classes&nbsp;(safe) &nbsp;&nbsp;&nbsp;&nbsp;Animal&nbsp;a&nbsp;=&nbsp;Animal::deer; &nbsp;&nbsp;&nbsp;&nbsp;Mammal&nbsp;m&nbsp;=&nbsp;Mammal::deer; &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;num2&nbsp;=&nbsp;a;&nbsp;&nbsp;&nbsp;//&nbsp;error &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(m&nbsp;==&nbsp;a)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;error&nbsp;(good) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;<<&nbsp;"bad"&nbsp;<<&nbsp;endl; &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(a&nbsp;==&nbsp;Mammal::deer)&nbsp;//&nbsp;error&nbsp;(good) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;<<&nbsp;"bad"&nbsp;<<&nbsp;endl;}结论:enum classES应该是首选的,因为它们会带来更少的可能导致bug的惊喜。
打开App,查看更多内容
随时随地看视频慕课网APP