Eso es que dentro de la clase el orden no importa tanto. Primero puedes hacer los constructores y después las variables.
Pero el orden es que primero se carga las variables en la memoria y después se construyen. No hay lógica que sea el contrario ¿no?
Estarás liado por que te has leído que todo debe estar declarado antes de ser usado, y así es como debe ser, pero en las clases eso no se aplica ya que todo esta bajo el mismo ámbito y el orden no importa.
De eso se encarga el preprocesador... De leer y cargar todo en memoria y poner cada cosa en su lugar.
Eso lo entenderás mejor cuando llegues a el tema del puntero this.
http://c.conclase.net/curso/?cap=031
En la parte que te dice:
Cita: Para cada objeto declarado de una clase se mantiene una copia de sus datos, pero todos comparten la misma copia de las funciones de esa clase.
Esto ahorra memoria y hace que los programas ejecutables sean más compactos, pero plantea un problema.
Cada función de una clase puede hacer referencia a los datos de un objeto, modificarlos o leerlos, pero si sólo hay una copia de la función y varios objetos de esa clase, ¿cómo hace la función para referirse a un dato de un objeto en concreto?
La respuesta es: usando el puntero especial llamado this. Se trata de un puntero que tiene asociado cada objeto y que apunta a si mismo. Ese puntero se puede usar, y de hecho se usa, para acceder a sus miembros.
Entonces en realidad lo que ocurre es que no están juntas en la memoria las funciones y las variables si no que tienes grupos de variables(cada una pertenece a su objeto creado) que al necesitar una función en común, esa se dirige hacia dicha función, pasa ese puntero this que dice donde esta las variables a las que tiene que hacer los cálculos, y listo. Internamente no estoy asignando antes de crearlas, es una falsa impresión.
Espero que no te este liando más. Es que el mecanismo de clases al principio te puede parecer extremadamente difícil y si que lo es, pero una vez pilles el tranquillo es que no puedes vivir sin clases nunca más XDD