如果我在类静态中创建枚举会有所不同吗?

时间:2010-10-14 21:52:23

标签: c++ class enums

基本上,如果我不做所有对象都获得所有枚举值的副本?

ps:一如既往,欢迎提供答案的参考资料......

5 个答案:

答案 0 :(得分:2)

您不能声明嵌套类型(例如枚举)静态。语法。

答案 1 :(得分:2)

使用enum关键字,您实际上是在定义类型,而不是像数据成员那样定义存储。

这就像定义一个内部类,如:

class X
   {
   private:
      class InnerClass
         {
         ...
         };
   };

InnerClass定义只是一个定义。它只是在外部类X的上下文中定义类型,因此InnerClass只能被称为X :: InnerClass。 但它肯定不会在X类实例中占用任何空间。

关于枚举的注释:枚举值实际上是整数,这些整数在需要的代码中使用。通常,没有所有枚举值的中央存储。枚举只定义了令牌和数值之间的映射,并且在代码中使用令牌的任何地方,编译器都将其替换为数值。

答案 2 :(得分:0)

你不能,这没有意义。每个实例都不存储值,它们会存储恰好来自枚举值的 值。

答案 3 :(得分:0)

枚举不包含所有可能的值。各种可能的值仅在编译期间存在于代码中。在运行时,枚举的每个实例本质上都是一个整数值。

答案 4 :(得分:0)

enum {..} s不会占用你程序中的任何空间。 仅声明为枚举类型的对象占用任何空间。即使这样,它也不可能比机器寄存器更适合空间(因为它们可以与整数类型兼容)。

在编译期间,唯一一个与所有枚举名称和为该类型定义的值相关联的存储空间。在运行时,所有这些信息都是不可靠的(因此不存在)。