Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda A Palavra-Chave Friend | Visão Geral do Encapsulamento
C++ Poo
course content

Conteúdo do Curso

C++ Poo

C++ Poo

1. Fundamentos de POO em C++
2. Construtores e Destrutores
3. Visão Geral do Encapsulamento
4. Visão Geral de Herança
5. Visão Geral do Polimorfismo

book
A Palavra-Chave Friend

A palavra-chave friend é um construto único, oferecendo uma exceção aos princípios padrão de encapsulamento da programação orientada a objetos. Ela permite que uma função ou outra class acesse membros private e protected de uma class.

main.cpp

main.cpp

copy
1234567891011121314151617
#include <iostream> class Example { private: const static int static_private_member = 0; friend void func(); // grants access to the private members to func() }; void func() { std::cout << Example::static_private_member; } int main() { func(); }

O uso dessa abordagem quebra o encapsulamento porque permite que entidades externas acessem os membros da class. No entanto, podem existir situações em que isso seja necessário. Por exemplo:

KeyManager.h

KeyManager.h

copy
123456
class KeyManager { public: KeyManager(const std::string& key) : encryptionKey(key) {} private: std::string encryptionKey; };

A encryptionKey é mantida como private, e não há um método de acesso fornecido porque queremos impedir o acesso externo a ela de fora da class. Mas e se houver a necessidade de usar um algoritmo externo para criptografar e descriptografar, é nesse caso que entra em cena o friend keyword.

KeyManager.h

KeyManager.h

CryptographicAlgorithm.h

CryptographicAlgorithm.h

copy
12345678910
#include "CryptographicAlgorithm.h" class KeyManager { public: KeyManager(const std::string& key) : encryptionKey(key) {} private: std::string encryptionKey; // Allow CryptographicAlgorithm access to private members friend class CryptographicAlgorithm; };

O uso mais comum da palavra-chave friend surge quando correções rápidas são necessárias, com a intenção de refatorar posteriormente. É preferível projetar os relacionamentos entre suas class sem depender dela, embora cenários específicos ainda possam ocorrer.

question mark

Para que serve a palavra-chave friend?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 6

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

course content

Conteúdo do Curso

C++ Poo

C++ Poo

1. Fundamentos de POO em C++
2. Construtores e Destrutores
3. Visão Geral do Encapsulamento
4. Visão Geral de Herança
5. Visão Geral do Polimorfismo

book
A Palavra-Chave Friend

A palavra-chave friend é um construto único, oferecendo uma exceção aos princípios padrão de encapsulamento da programação orientada a objetos. Ela permite que uma função ou outra class acesse membros private e protected de uma class.

main.cpp

main.cpp

copy
1234567891011121314151617
#include <iostream> class Example { private: const static int static_private_member = 0; friend void func(); // grants access to the private members to func() }; void func() { std::cout << Example::static_private_member; } int main() { func(); }

O uso dessa abordagem quebra o encapsulamento porque permite que entidades externas acessem os membros da class. No entanto, podem existir situações em que isso seja necessário. Por exemplo:

KeyManager.h

KeyManager.h

copy
123456
class KeyManager { public: KeyManager(const std::string& key) : encryptionKey(key) {} private: std::string encryptionKey; };

A encryptionKey é mantida como private, e não há um método de acesso fornecido porque queremos impedir o acesso externo a ela de fora da class. Mas e se houver a necessidade de usar um algoritmo externo para criptografar e descriptografar, é nesse caso que entra em cena o friend keyword.

KeyManager.h

KeyManager.h

CryptographicAlgorithm.h

CryptographicAlgorithm.h

copy
12345678910
#include "CryptographicAlgorithm.h" class KeyManager { public: KeyManager(const std::string& key) : encryptionKey(key) {} private: std::string encryptionKey; // Allow CryptographicAlgorithm access to private members friend class CryptographicAlgorithm; };

O uso mais comum da palavra-chave friend surge quando correções rápidas são necessárias, com a intenção de refatorar posteriormente. É preferível projetar os relacionamentos entre suas class sem depender dela, embora cenários específicos ainda possam ocorrer.

question mark

Para que serve a palavra-chave friend?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 6
some-alt