C ++, cosa significa il colon dopo un costruttore?

Possibili duplicati:
Variabili dopo i due punti in un costruttore
Domanda di syntax del costruttore C ++ (noob)

Ho un codice C ++ qui:

class demo { private: unsigned char len, *dat; public: demo(unsigned char le = 5, unsigned char default) : len(le) { dat = new char[len]; for (int i = 0; i <= le; i++) dat[i] = default; } void ~demo(void) { delete [] *dat; } }; class newdemo : public demo { private: int *dat1; public: newdemo(void) : demo(0, 0) { *dat1 = 0; return 0; } }; 

La mia domanda è, quali sono i termini : len(le) e : demo(0, 0) chiamati?

Ha qualcosa a che fare con l’ereditarietà?