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
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(); }
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
123456class KeyManager { public: KeyManager(const std::string& key) : encryptionKey(key) {} private: std::string encryptionKey; };
La encryptionKey se mantiene como private, y no se proporciona un método de acceso porque se desea impedir el acceso externo desde fuera de la class. Pero, ¿qué ocurre 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
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; };
El caso de uso más común para la palabra clave friend surge cuando se requieren soluciones rápidas y se planea refactorizar más adelante. Es preferible diseñar las relaciones entre class sin depender de ella, aunque pueden presentarse escenarios específicos.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Genial!
Completion tasa mejorada a 3.13
La Palabra Clave Friend
Desliza para mostrar el menú
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
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(); }
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
123456class KeyManager { public: KeyManager(const std::string& key) : encryptionKey(key) {} private: std::string encryptionKey; };
La encryptionKey se mantiene como private, y no se proporciona un método de acceso porque se desea impedir el acceso externo desde fuera de la class. Pero, ¿qué ocurre 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
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; };
El caso de uso más común para la palabra clave friend surge cuando se requieren soluciones rápidas y se planea refactorizar más adelante. Es preferible diseñar las relaciones entre class sin depender de ella, aunque pueden presentarse escenarios específicos.
¡Gracias por tus comentarios!