Ciao, il primo caso utilizzi una lista di inizializzazione. Non mi ricordo precisamente, magari aspetta qualche risposta più approfondita, ma intanto:
La lista di inizializzazione, inizializza appunto, i membri prima della chiamata del corpo della funzione, sono utili per esempio per definire variabili costanti, e poi per cose più compelsse tipo i moduli. Magari sbaglio ma dovresti poter fare:
edit:class TuaClasse{
.
.
.
const int a;
.
.
public:
.
.
TuaClasse(int c);
.
.
};
TuaClasse::TuaClasse(int c) : a(c) {.......};
Ho anche provato ed effettivamente se provi ad inizializzare c all'interno del corpo da errore facendolo nella lista invece puoi.