As funções de membro da própria classe sempre têm acesso aos private
membros, independentemente de a função de membro ser definida dentro ou fora da classe e não importa se é uma função de membro especial, como um construtor de copiar / mover.
Portanto, eles não são friend
da classe, porque isso não faz nenhum sentido. Eles já fazem parte da turma. Ainda assim, eles têm acesso a todos os private
membros, não porque sejamfriend
s, mas porque fazem parte da classe.
Se não fosse possível inicializar membros em um construtor (porque eles são inacessíveis), todo o conceito de acessibilidade de membros seria inútil. (Como você inicializaria o membro?)
Além disso, a acessibilidade não é de forma alguma uma questão do objeto no qual um membro é acessado. A acessibilidade é uma questão apenas de onde no código um nome (o nome do membro) é usado. Se uma função puder acessar o membro de uma instância de uma classe, também poderá acessar o membro de outra instância da mesma classe.