与正常的枚举,

与正常的枚举,枚举成员可以访问(如红色)直接在周边的范围(如在主)。然而,与枚举类,强作用域规则意味着你必须使用一个域限定符访问枚举器(例如:颜色:红色)。这有助于保持名称的污染和潜在的名称冲突。

强类型规则意味着,C++将寻找一个明确定义的比较函数比较颜色和水果。因为我们还没有定义一个运算符= =(颜色,水果)函数,编译器不知道如何比较A和B的任何有意义的方式,这将导致编译时错误发生。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
int main()
{
     enum class Color
     {
         RED,
         BLUE
     };
 
     enum class Fruit
     {
         BANANA,
         APPLE
     };
 
     Color a = Color::RED; // note: RED is not accessible any more, we have to use Color::RED
     Fruit b = Fruit::BANANA; // note: BANANA is not accessible any more, we have to use Fruit::BANANA
 
     if (a == b) // compile error here, as the compiler doesn't know how to compare different types Color and Fruit
         cout << "a and b are equal" << endl;
     else
         cout << "a and b are not equal" << endl;
 
     return 0;

当C + +比较A和B,这是比较他们为整数,这意味着在上面的例子中,一个确实等于B因为他们都默认为整数0。这是绝对没有希望从A和B是从不同的枚举!

C + + 11定义了一个新的概念,枚举类,使两个强类型的枚举和强烈的范围。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值