O que é função de amigo?
Função de amigo é uma função não membro que pode acessar os membros privados e protegidos de uma classe. “Amigo” é uma palavra-chave usada para indicar que uma função é amiga de uma classe. Isto permite ao compilador saber que a função particular é amiga da classe dada. A função amigo deve ser capaz de acessar o membro privado e protegido de uma determinada classe. Sem a palavra-chave friend, uma função externa não membro pode acessar apenas os membros públicos de uma classe.
Principais recursos da função de amigo:
Aqui estão os principais recursos da função de amigo:
- Uma função de amigo não está no escopo da classe.
- A função de amigo não pode ser chamada usando uma instância de uma classe.
- Ele pode acessar os membros usando o operador de objeto e ponto.
Sintaxe da função de amigo:
Aqui está a sintaxe da função de amigo:
class Class_Name_Demo…
…
amigo return_Type function_Name (arg_1, arg_2,…);
;
Exemplo de função de amigo:
Agora, vamos dar uma olhada em um programa de exemplo para entender o conceito da função amigo em C++. No programa de exemplo abaixo, temos a classe “Friend_Demo”. Ele tem três tipos diferentes de membros de dados, i.e., privado, protegido e público.
Definimos outra função, i.e., “FriendDemo_Func ()” fora do escopo da classe “Friend_Demo” e tentou acessar os membros (privados, protegidos e públicos) da classe “Friend_Demo”.
Mas, como você pode ver na saída abaixo, quando compilamos o programa, ele gera erros de compilação. A função de amigo vai resolver exatamente este problema.
#incluirusando namespace std;
classe Friend_Demo
privado:
int i_private;
protegido:
int i_protected;
público:
int i_public;
;
void friendDemo_Func ()
Friend_Demo fd;
fd.i_privado = 10;
fd.i_protected = 15;
fd.i_public = 20;
cout << fd.i_private << endl;
cout << fd.i_protected << endl;
cout << fd.i_public << endl;
int main ()
friendDemo_Func ();
return 0;
No programa anterior, estávamos obtendo erros de compilação ao tentar acessar os membros private, protected e public de uma classe de uma função não membro. Isso ocorre porque uma função não membro não tem permissão para acessar os membros privados e protegidos de uma classe de fora do escopo da classe.
Agora, neste exemplo, declaramos a função “friendDemo_Func ()” como um amigo dentro do escopo da classe, i.e., “Friend_Demo”:
amigo void friendDemo_Func ();Nós criamos um objeto, eu.e., “Fd” da classe “Friend_Demo” dentro da função “friendDemo_Func ()”. Agora, podemos acessar os membros privados, protegidos e públicos da classe “Friend_Demo” usando o operador ponto. Atribuímos 10, 15 e 20 para i_private, i_protected e i_public, respectivamente.
Como você pode ver na saída abaixo, este programa agora é compilado e executado sem erros e imprime a saída conforme o esperado.
#incluirusando namespace std;
classe Friend_Demo
privado:
int i_private;
protegido:
int i_protected;
público:
int i_public;
amigo void friendDemo_Func ();
;
void friendDemo_Func ()
Friend_Demo fd;
fd.i_privado = 10;
fd.i_protected = 15;
fd.i_public = 20;
cout << fd.i_private << endl;
cout << fd.i_protected << endl;
cout << fd.i_public << endl;
int main ()
friendDemo_Func ();
return 0;
Conclusão:
Neste artigo, expliquei o conceito da função amigo em C++. Também mostrei dois exemplos de trabalho para explicar como a função friend se comporta em C++. Às vezes, a função amigo pode ser muito útil em um ambiente de programação complexo. No entanto, um programador deve ter cuidado com o uso excessivo e comprometer seus recursos OOP.