关于占用内存的大小,enum类型本身是不占内存的,编译器直接替换。但是enum类型的变量肯定是占内存的.

  • class A{
  •     public:
  •     //enum类型本身不占内存
  •     enumEnumTest{
  •     a =1,b =5};
  • };
  • class B{
  •     public:
  •     private:
  •     //enum理想的变量会占用内存
  •     enumEnumTest enumSample1;
  • };
  • int main()
  • {
  •   
  •    cout <<"sizeof(Class A) = "<<sizeof(A)<< endl;
  •     cout <<"sizeof(Class B) = "<<sizeof(B)<< endl;
  •     return0;
  • }

 

结果A占1个字节,B占4个字节.

enum结构体定义的的确是常量,但并不是在预编译的时候进行替换,而是在编译时,从enum定义的常量存储区取定义的常量值。因此,同样的常量定义,如果用#define,代码中多处用到该常量的话,编译出来的会比用enum定义使用的常量存储区大。

,#define 定义的常量,在预编译的时候做了替换,而enum定义的常量,并不是在预编译的时候进行替换,只是在编译的时候,根据标识去常量区获取对应的值。

 

只是举个enum常用的例子。

这也是在类中静态声明一个数组的好方法称为enum hack。

相关文章:

  • 2021-08-22
  • 2021-08-19
  • 2021-11-19
  • 2022-12-23
  • 2021-12-13
  • 2022-02-03
  • 2021-06-04
猜你喜欢
  • 2022-01-25
  • 2022-12-23
  • 2022-03-03
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案