Есть ли какая-либо польза от помещения переменной-члена класса в список инициализаторов, которая не обязательно должна быть в списке инициализаторов? Пример:
class Foo
{
public:
Foo() {}
};
class Bar
{
public:
Bar() : _foo() {}
private:
Foo _foo;
};
Делает ли компилятор что-то особенное в этом случае?
_foo
уже инициализирован (используя конструктор foo по умолчанию) из объявленияFoo _foo;
Если вы хотите повторно инициализировать_foo
, используйтеBar() : _foo(Foo()) {}
. Однако это было бы бессмысленно. - person andre   schedule 05.11.2012_foo
инициализируется в списке инициализаторов. Это единственное место, где члены класса инициализируются.Bar() : _foo(Foo()) {}
не повторно инициализирует_foo
— он инициализирует его. - person John Dibling   schedule 05.11.2012