我应该在哪里声明一个关于多次实例化的类的枚举类?

时间:2016-03-10 10:31:33

标签: c++ optimization enums

我有一个包含颜色属性的类,我想使用枚举来处理它。因为在运行时我的程序可能会创建这个类的数千个实例,哪里是声明枚举以优化内存使用的最佳位置?

目前,我的班级声明如下:

class Node
{
public :
//constructors, methods, etc...
enum class Color : char{WHITE, GREY, RED, GREEN}

protected :
//Some private attributes
Color _color = Color::WHITE;
};

我知道这是一种可以接受的方式,我的问题是:当我得到100k这类课程时会不会带来表演?

2 个答案:

答案 0 :(得分:1)

我猜你在class vs enum class的声明中关注enum

enum class和旧样式enum将生成完全相同的代码,并且在编译器的“后端”中表现完全相同。区别在于编译器的语义分析(类型检查)(与“传统”enum类型相比更严格的检查,因此您无法执行int x = WHITE;enum { A, B }; Color c = A;)。< / p>

答案 1 :(得分:1)

与任何数据类型一样,枚举本身不会在您的对象中占用存储空间,它会存储枚举的实例 。 (关于这一点,enumenum class之间没有区别。)因此,将枚举移出课堂并没有在这方面有任何区别。

因此,在您的情况下,color_成员会占用存储空间。如果存在您不需要的子类,您可能需要重新考虑您的课程设计。否则,你没事!