struct A1{
A1(){cout<<1;}
};
struct A2{
A2(){cout<<2;}
};
class B{
A1 x;
A2 y;
public:
B():y(),x(){}
};
int main() {
B b;
}
Сначала объявлен член x, затем y. А в списке инициализации обратный порядок. Посмотрим что важнее. Запускаем. Получим "12". Все верно, ведь инициализация происходит в порядке объявления их в классе, а не в списке инициализации (так написано в спецификации).
А еще MinGW предупреждает:
In constructor 'B::B()':
|18|warning: 'B::y' will be initialized after
|17|warning: 'A1 B::x'
|20|warning: when initialized here
y будет проинициализирован позже, чем x, несмотря на порядок в списке инициализации.
Комментариев нет:
Отправить комментарий
Можно использовать теги <b>, <i>