Listing Members in an Initialization List

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])	    {}

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.

Share the Post:
Share on facebook
Share on twitter
Share on linkedin


Recent Articles: