Это способ инициализировать поля-члены класса до фактического вызова c'tor класса.
Предположим, у вас есть:
class A {
private:
B b;
public:
A() {
//Using b here means that B has to have default c'tor
//and default c'tor of B being called
}
}
Итак, теперь, написав:
class A {
private:
B b;
public:
A( B _b): b(_b) {
// Now copy c'tor of B is called, hence you initialize you
// private field by copy of parameter _b
}
}
Это список инициализации членов.
Вы устанавливаете для каждой из переменных-членов значения в скобках в части после двоеточия.
Как и многие другие вещи в C ++, :
используется для многих вещей, но в вашем если это начало списка инициализаторов.
Другие варианты использования, например, после публичного / частного / защищенного, после метки case, как часть тернарного оператора и, возможно, некоторые другие.