C ++ - 在外部或课堂上声明枚举时的性能?

时间:2017-03-03 14:59:29

标签: c++

我有一个非常具体的问题;在类外声明枚举以及在类中声明枚举时,性能是否有任何差异? 谢谢!

3 个答案:

答案 0 :(得分:3)

不,没有性能差异。

类范围中声明的任何enumenum class都将其名称限定在班级' name(在某种意义上,类的名称也是命名空间);并且执行了access checking

这里唯一真正的区别是访问检查,否则,命名空间点不是问题,因为C ++中的每个名称都在某个命名空间内被删除(无论是否为全局)。

没有性能影响。

答案 1 :(得分:0)

我刚刚实现了两种变体并查看了它们的objdumps。它们完全相同,所以没有性能差异。不同之处仅在于代码风格。

答案 2 :(得分:0)

性能差异为零。封闭类只会影响enum的名称和enum可见的名称。 整个差异如下所示;看看静态断言如何引用两个foo,它们对x的含义有不同的看法。

const int x = 3;
enum foo { z = x };

struct bar {
    static const int x = 4;
    enum foo { z = x };
};

static_assert(z == 3, "from ::x");
static_assert(bar::z == 4, "from bar::x");