Pular para o conteúdo

Usando o friend em C++

Dica publicada em C/C++ / Introdução
Perfil removido removido
Hits: 17.616 Categoria: C/C++ Subcategoria: Introdução
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Usando o friend em C++

Programar usando orientação objeto significa encapsular num mesmo módulo dados, informações e operações que de alguma forma se relacionam. Porém as vezes é preciso quebrar esse encapsulamento, por algum motivo, seja lá qual for ele. Para isso C++ oferece o operador friend. Ele serve basicamente para dizer para uma classe quais são sua (s) classe(s) amiga(s) (friend == amigo). As classes amigas tem alguns privilégios que as classes não-amigas não tem, como acessar os atributos e métodos private por exemplo. Exemplo:

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
class teste {
public:
   teste() { priv = 14; };

friend class amiga;
private:
   int priv;
};

class amiga {
public:
   amiga();

   teste t;
   void faz_alguma_coisa() {
      /* a classe amiga é amiga da classe teste e pode acessar
       seus atributos privados */
     t.priv = 10;
   }
};

class nao_amiga {
public:
   nao_amiga();

   teste t;
   void faz_alguma_coisa() {
      /* isso dá erro, porque o atributo priv da classe teste é
       privado e nao_amiga não é amiga de teste*/
     t.priv = 5;
   }
};

Não vejo muita utilidade em friend e particularmente nunca o usei em nenhum dos meus programas. Sempre é possível reorganizar a classe de forma que não seja preciso quebrar o encapsulamento. Mas fica aí a dica se alguém precisar usar.

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Instalando Spotify no Ubuntu 18.04 LTS

Faça foto descrição e compartilhe com o mundo

Biblioteca libpangocairo-1.0.so.0 no Slackware 10.2

Apresentando a distribuição GNU/Linux NetRunner 14.2

Splash Screen do VOL no KDE 4

Programando no Ubuntu - aplicações gráficas em C++ com Eclipse e Glade

Classes para vários tipos (templates)

Site com questões de programação

Checagem de erro do scanf

Instalando a biblioteca libxml2

#1 Comentário enviado por cwars em 14/11/2007 - 10:51h
Esse foi um dos motivos que muitos afirmam que C++ havia se tornado uma linguagem inchada, pois existem muita coisa que quase não tem nenhuma utilidade, além que uma linguagem orientada a objetos (em minha opnião) só tem utilidade rodando em modo gerenciado, ou seja, numa máquina virtual, assim como: Java, Mono, Python, PhP e outra.

Contudo parece que essa moda de inchar a linguagem de coisas inúteis também está invadindo outras linguagens, C# mesmo na sua 3 versão está cheia de coisas sem valor e Java também está seguindo o mesmo caminho, acredito que uma linguagem deve ser como C, simples e prática, sem muitas invenções, mas ainda acho que o C poderia ser mais simples.
#2 Comentário enviado por LucasG1995 em 03/08/2016 - 15:09h
Entao,resumindo,uma classe amiga eh uma segunda classe criada q pode acessar as funcoes da primeira?? No caso,a variavel t eh um objeto da classe amigas capaz de chamar as funcoes membro??? Eh isso msm? Obg

Contribuir com comentário

Entre na sua conta para comentar.