Dlaczego tak
Pole stałe musi otrzymać wartość w chwili tworzenia, a to umożliwia lista inicjalizacyjna konstruktora po dwukropku: : r(x). Instrukcje w ciele konstruktora wykonują się, gdy pola już istnieją, więc r = x jest przypisaniem do stałej i kompilator je odrzuci. Lista inicjalizacyjna jest też jedynym sposobem nadania wartości polom referencyjnym i wywołania konstruktora klasy bazowej z argumentami.