Почему gcc бросает шипение, если порядок списка инициализаторов не соответствует переменному порядку в классе?
class myClass
{
public:
int A;
int B;
myClass();
};
myClass::myClass() :
B(1),
A(2)
{}
приведет к:
file.h:274: warning: 'myClass::A' will be initialized after
file.h:273: warning: 'int myClass::B
file.cpp:581: warning: when initialized here
Есть ли какая-то конкретная причина, почему этот вид предупреждения выдается? Существуют ли какие-либо риски, связанные с инициализацией переменных класса в порядке, отличном от того, что они определены внутри класса?
(обратите внимание, что есть вопрос , который затрагивает тему, но ответы в значительной степени "потому что это должно быть так", не давая никаких объяснений относительно того, почему это должен быть заказан, или что не так с этим не в порядке - я хотел бы знать, почему такое ограничение существует - может ли кто-нибудь привести пример, где он может иметь неприятные последствия?)