C++ - 在类内或外声明枚举类型,对性能有影响吗?

3

我有一个非常具体的问题:在类外部声明枚举和在类内部声明枚举时,性能是否有差异?谢谢!


2
枚举在运行时没有任何影响。它们就像整数字面量一样。 - Peter Lenkefi
1
当您将枚举声明为类外或类内时,不会出现任何性能问题。 - Mausam Sinha
2
欢迎来到Stack Overflow,这里问一个初学者问题会被狂踩。请不要太在意这些负评,有些人在这里就是不太友好。 - Steve Lorimer
谢谢大家,你们都太棒了 :) @SteveLorimer,收到。 - user7654188
2个回答

3
没有性能差异。
在类作用域内声明的任何枚举或枚举类,其名称都绑定到类的名称(以类的名称为命名空间),并对其使用执行访问检查
这里唯一的真正区别是访问检查,否则,命名空间点不是问题,因为C++中的每个名称都在某个命名空间中声明(无论是全局还是其他)。
没有性能影响。

这里有额外的性能影响 - 你是在说有性能影响,还是这是个打错字? - Steve Lorimer
@SteveLorimer,这是一个打字错误。已经修复了。 - WhiZTiM

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");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接