O que é essa estranha sintaxe de membro de dois-pontos (“:”) no construtor?

Recentemente eu vi um exemplo como o seguinte:

#include <iostream>

class Foo {
public:
  int bar;
  Foo(int num): bar(num) {};
};

int main(void) {
  std::cout << Foo(42).bar << std::endl;
  return 0;
}

O que isso estranho: bar(num) significar? De alguma forma parece inicializar a variável de membro, mas eu nunca vi essa sintaxe antes. Parece uma chamada de função / construtor, mas para umaint? Não faz sentido para mim. Talvez alguém possa me esclarecer. E, a propósito, existem outras características de linguagem esotérica como essa, você nunca encontrará em um livro comum de C ++?

questionAnswers(12)

yourAnswerToTheQuestion