Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende La Palabra Clave Friend | Visión General de la Encapsulación
POO en C++

bookLa 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

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(); }

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

KeyManager.h

copy
123456
class 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

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; };

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.

question mark

¿Para qué se utiliza la palabra clave friend?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 6

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

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?

bookLa 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

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(); }

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

KeyManager.h

copy
123456
class 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

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; };

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.

question mark

¿Para qué se utiliza la palabra clave friend?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 6
some-alt