基本上,如果我不做所有对象都获得所有枚举值的副本?
ps:一如既往,欢迎提供答案的参考资料......
答案 0 :(得分:2)
您不能声明嵌套类型(例如枚举)静态。语法。
答案 1 :(得分:2)
使用enum关键字,您实际上是在定义类型,而不是像数据成员那样定义存储。
这就像定义一个内部类,如:
class X
{
private:
class InnerClass
{
...
};
};
InnerClass定义只是一个定义。它只是在外部类X的上下文中定义类型,因此InnerClass只能被称为X :: InnerClass。 但它肯定不会在X类实例中占用任何空间。
关于枚举的注释:枚举值实际上是整数,这些整数在需要的代码中使用。通常,没有所有枚举值的中央存储。枚举只定义了令牌和数值之间的映射,并且在代码中使用令牌的任何地方,编译器都将其替换为数值。
答案 2 :(得分:0)
你不能,这没有意义。每个实例都不存储值,它们会存储恰好来自枚举值的 值。
答案 3 :(得分:0)
枚举不包含所有可能的值。各种可能的值仅在编译期间存在于代码中。在运行时,枚举的每个实例本质上都是一个整数值。
答案 4 :(得分:0)
enum {..}
s不会占用你程序中的任何空间。 仅声明为枚举类型的对象占用任何空间。即使这样,它也不可能比机器寄存器更适合空间(因为它们可以与整数类型兼容)。
在编译期间,唯一一个与所有枚举名称和为该类型定义的值相关联的存储空间。在运行时,所有这些信息都是不可靠的(因此不存在)。