2013-05-11 43 views
0
class MyClass 
{ 
    public: 
     enum ErrorCodes 
     { 
      ERR_SUCCESS  = 1, 
      ERR_READ  = 2, 
      ERR_WRITE  = 3, 
      // ... 
      ERR_ALLOCATE = 99, 
      ERR_DELETE  = 100 
     }; 

     ErrorCodes DoSomething(); 
}; 

MyClass::ErrorCodes MyClass::DoSomething() 
{ 
    // ... 
    return ErrorCodes::ERR_SUCCESS; 
} 

在我的示例代碼中有一個非常長的定義,其中有100個變量。假設每個變量都包含4個字節的內存,則enum將使用400個字節的內存。一旦我開始創建這個類的對象會發生什麼?由於這個enum或者enum會在這個類的所有對象之間共享每個對象是否會消耗額外的400字節的內存,所以只有固定的400字節纔會被使用,而不管初始化的類實例的數量是多少?是在類實例之間共享的類中的enum定義,還是爲每個實例複製?

如果要爲每個實例使用400字節的內存,那麼在這種情況下可以使用哪種替代方法?

+4

枚舉只是數字的名字 - 它們不會被「存儲」在任何地方。 – 2013-05-11 20:47:35

回答

6

一個enum聲明不使用任何運行時內存。這只是爲常量使用符號名稱的一種便捷方式。

相關問題