Diferença entre Função Amigo e Classe Amigo

Autor: Laura McKinney
Data De Criação: 1 Abril 2021
Data De Atualização: 11 Poderia 2024
Anonim
Diferença entre Função Amigo e Classe Amigo - Tecnologia
Diferença entre Função Amigo e Classe Amigo - Tecnologia

Contente


A função Friend e friend class são as técnicas usadas para acessar os membros privados de uma classe usando a palavra-chave friend. A diferença comum entre a função de amigo e a classe de amigo é que, quando a função de amigo é usada, os membros da classe privada podem ser acessados, mas na classe de amigo, apenas os nomes da classe de amigo são acessados, e não os membros privados da classe.

o recurso de amigo se usado por função ou classe pode produzir um impacto negativo na estrutura orientada a objetos, pois enfraquece a encapsulamento o que é contra Orientado a Objeto paradigma. Esta é a razão pela qual o recurso de amigo deve ser usado com sabedoria, caso contrário, poderia pausa a ocultação de dados do código.

Esse recurso de amigo não é comutativo e nem transitivo. X é amigo de Y não infere que Y também é amigo de X. Se X é amigo de Y e Y é amigo de Z, não implica que X seja amigo de Z.


    1. Gráfico de comparação
    2. Definição
    3. Principais diferenças
    4. Conclusão

Gráfico de comparação

Base para comparaçãoFunção AmigoClasse Amigo
BasicÉ uma função usada com uma palavra-chave friend para conceder acesso a uma função não membro aos membros privados de uma classe.É uma classe usada com uma palavra-chave friend para acessar os membros privados de outra classe.
Declaração de encaminhamentoDeve ser usado.Não é obrigatório.
UsarUma função de amigo pode ser usada em algumas situações de sobrecarga do operador.Uma classe de amigo pode ser usada quando uma classe é criada na parte superior de outra classe.


Definição da Função Amigo

o função de amigo é usado para acessar os membros privados e protegidos de uma classe, permitindo que a função não membro obtenha acesso. Nesse tipo de função, uma palavra-chave friend é usada antes do nome da função no momento da declaração. Existem algumas condições restritivas aplicadas à função de amigo. A primeira condição é que a função de amigo não seja herdada por uma classe filho. A segunda condição é que o especificador de classe de armazenamento pode não estar presente na função friend, o que significa que não pode ser declarado como estático e externo.

A função friend não é chamada com um objeto de chamada da classe. Os exemplos da função de amigo são: uma função global, função de membro de uma classe, modelo de função pode ser uma função de amigo. Vamos entender isso com a ajuda de um exemplo.

#incluir usando espaço para nome std; primeira classe {int data; public: first (int i): data (i) {} amigo void display (const primeiro & a); }; exibição nula (const primeiro & a) {cout << "data =" <using namespace std; class First {// Declarar um amigo class friend class Second; public: First (): a (0) {} void () {cout << "O resultado é" << a << endl; } privado: int a; }; classe Segunda {public: void change (Primeira & yclass, int x) {yclass.a = x; }}; int main () Primeiro obj1; Segundo obj2; obj1. (); obj2.change (obj1, 5); obj1. (); // Saída O resultado é 0 O resultado é 5

  1. Função de amigo é uma função capaz de acessar os membros privados e protegidos de uma classe. Por outro lado, uma classe de amigo é uma classe que ajuda a acessar os membros privados de uma classe.
  2. Uma função de amigo é declarada incluindo seu protótipo dentro da classe, antecede-o com a palavra-chave friend. Da mesma forma, uma classe de amigo também é definida usando a palavra-chave friend.
  3. A declaração de encaminhamento é usada no caso da função de amigo como contra, não é necessário usá-lo na classe de amigo.

Conclusão

Uma função de amigo é necessária quando uma função precisa acessar duas ou mais classes independentes, membros internos. Por outro lado, uma classe de amigo é necessária quando uma classe exige acesso aos membros de outra classe. Quando uma função de membro múltiplo precisa ser amiga dessa função, nesse caso, é melhor usar a classe de amigo.