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
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
C++ Poo

bookA Palavra-Chave Friend

A palavra-chave friend representa um recurso ú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 deseja-se 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 o friend keyword entra em cena.

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 ocorre quando são necessárias correções rápidas, 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

Suggested prompts:

Can you give an example of how the friend keyword is used in code?

What are some alternatives to using the friend keyword?

Are there any risks or drawbacks to using the friend keyword?

bookA Palavra-Chave Friend

Deslize para mostrar o menu

A palavra-chave friend representa um recurso ú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 deseja-se 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 o friend keyword entra em cena.

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 ocorre quando são necessárias correções rápidas, 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