Что это за странный синтаксис двоеточия («:») в конструкторе?
Недавно я видел пример, подобный следующему:
#include <iostream>
class Foo {
public:
int bar;
Foo(int num): bar(num) {};
};
int main(void) {
std::cout << Foo(42).bar << std::endl;
return 0;
}
Что это странно: bar(num)
значит? Кажется, что-то инициализирует переменную-член, но я никогда раньше не видел этот синтаксис. Это похоже на вызов функции / конструктора, но дляint
? Не имеет смысла для меня. Возможно, кто-то мог бы просветить меня. И, кстати, есть ли какие-либо другие особенности эзотерического языка, подобные этой, которые вы никогда не найдете в обычной книге по С ++?