The reason for this is that if you want to declare a member variable as some transformation of another member variable, you can end up with declaring it before the first variable is initialized. So, if you have:
Code:
class Example {
private:
int a;
int b;
public:
Example();
};
Example::Example():
b(2), a(b+1) {
}
the value of a will not be 3, but undefined, even though it looks like it's declared after b. It's not a compiler error to have them in a different order, but it will produce a warning (I believe the warning is "warning: when initialized here").