C++ · Essencial · Inglês · Técnico
friend
Declaração que dá a uma função ou classe externa acesso aos membros privados e protegidos de uma classe. A amizade não é herdada nem recíproca.
Onde usar
Muito usada em operator<< de saída, que precisa ser função livre mas ler campos privados. Em excesso, friend quebra o encapsulamento e merece discussão no review.
Em código
class P {
int x_ = 3;
friend std::ostream&
operator<<(std::ostream& o, const P& p) {
return o << p.x_;
}
};Exemplos
Make operator<< a friend so it can read the private fields.
Faça operator<< um friend para ele ler os campos privados.
Too many friends in this class, the encapsulation is gone.
Amigos demais nessa classe, o encapsulamento foi embora.
Cuidado
Friend não torna a função um membro: ela continua livre, e a declaração só concede o acesso.
Sinônimos
função amiga
Origem
Do inglês friend, amigo.