Conteúdo do Curso
C++ Poo
C++ Poo
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
#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
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
CryptographicAlgorithm.h
#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.
Obrigado pelo seu feedback!