This tips explains how to list members in an initialization list in the order in which they are declared.
Take a class Array:
class Array {private: int *m_piData; // ptr to actual array data unsigned m_uiSize;// # of elements in the arraypublic: Array (unsigned size);};Array::Array (unsigned size): m_uiSize(size), m_piData(newint[m_uiSize]) {}
size=3>
The above code fragment does not reveal how much memory is held by the m_piData. This is because the class members are initialized in the order of their declaration in the class. The order in which they are listed in a member initialization list does not make any difference. In the Array class, m_piData will always be initialized first, followed by m_uiSize.
If the initialization of a data member needs the value of another data member, then it is safer to initialize them in the body of the constructor.