Что касается следующего: существуют ли какие-либо причины для одного над другим или они примерно эквивалентны?
class Something
{
int m_a = 0;
};
против
class Something
{
int m_a;
Something(int p_a);
};
Something::Something(int p_a):m_a(p_a){ ... };