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
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?
Awesome!
Completion rate improved to 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!