Contenido del Curso
POO en C++
POO en C++
La Palabra Clave Friend
La palabra clave friend
es un constructo único que representa una desviación de los principios estándar de encapsulamiento en la programación orientada a objetos. Permite que una función u otra class
acceda a los miembros private
y protected
de una 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(); }
El uso de este enfoque rompe el encapsulamiento porque permite que entidades externas accedan a los miembros de la class
. Sin embargo, pueden existir situaciones en las que sea necesario hacerlo. Por ejemplo:
KeyManager.h
class KeyManager { public: KeyManager(const std::string& key) : encryptionKey(key) {} private: std::string encryptionKey; };
La encryptionKey se mantiene private
, y no se proporciona un método de acceso porque se desea evitar el acceso externo desde fuera de la class
. Pero, ¿qué sucede si es necesario utilizar un algoritmo externo para cifrar y descifrar? Aquí es donde entra en juego la palabra clave 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; };
El caso de uso más común para la palabra clave friend
surge cuando se requieren soluciones rápidas, y se tiene la intención de refactorizarlo más adelante. Es preferible diseñar las relaciones de tus class
sin depender de ella, aunque pueden presentarse escenarios específicos donde sea necesaria.
¡Gracias por tus comentarios!