Las funciones miembro de la clase en sí siempre tienen acceso a los privatemiembros, sin importar si la función miembro se define dentro de la clase o fuera de clase y si se trata de una función miembro especial como un constructor de copia / movimiento.
Por lo tanto, no son friendde la clase, porque eso no tiene ningún sentido. Ya son parte de la clase. Aún así, tienen acceso a todos los privatemiembros, no porque sean friends, sino porque son parte de la clase.
Si no fuera posible inicializar miembros en un constructor (porque son inaccesibles), entonces todo el concepto de accesibilidad de miembros sería inútil. (¿Cómo inicializarías al miembro?)
Además, la accesibilidad no es de ninguna manera una cuestión del objeto en el que se accede a un miembro. La accesibilidad es solo una cuestión de en qué parte del código se usa un nombre (el nombre del miembro). Si una función puede acceder al miembro de una instancia de una clase, entonces también puede acceder al miembro de otra instancia de la misma clase.