2014-07-09 51 views
0

我有一個C++類,其具有返回對象的功能:優化:使用類較少的內存

class MyClass 
{ 
public: 
    int m_v1; 
    double m_v2; 
    ObjA m_obA; 
    ObjB m_obB; 
    std::string m_s1; 

    std::vector<float> foo(); 

public: 
    MyClass(); 
    ~MyClass(); 

    int foo2(); 
    double foo3(); 
    ObjA foo4(); 
}; 

我知道重組降序的類型的順序的成員,所使用的存儲器將較小。如果功能成員是一樣的,我應該如何組織它是最好的方式?

+4

成員函數不會影響類的大小或佈局。至少不適合沒有虛擬成員的班級。 – juanchopanza

+0

如果有虛擬成員,那麼聲明這些虛擬成員的順序決定了他們獲得哪個插槽。 – Deduplicator

+0

你不遵循你自己的規則,int應該在雙倍之後! –

回答

0

由於@ juanchopanza指出非虛擬成員函數不會影響對象的大小。在大多數C++實現中,FIRST虛擬方法通過sizeof(指針)增加對象大小。其他方法(虛擬或其他方法)不會影響對象大小。