¿Puede explicarme por qué friend
se prefiere la palabra clave para otorgar derechos de acceso a datos privados de clase?
c++
definition
Dalton
fuente
fuente
friend
se prefirió, ¿qué otras formas utiliza habitualmente para acceder a datos de clase privada desde el exterior?Respuestas:
Friend es la forma clásica de extender la interfaz de una clase.
Pero lo mejor es que ese amigo documenta explícitamente su intención de vincular estrechamente elementos específicos a una clase.
Nota: Al usar amigo, estás vinculando estrechamente a los amigos a la clase.
Un ejemplo perfecto son los operadores de flujo en C ++
Aquí estamos ampliando la interfaz pública de la clase Plop de una manera que nos permite transmitir el objeto dentro y fuera de una secuencia, pero sin exponer la implementación interna o causar futuros dolores de cabeza de implementación al requerir el uso de métodos get / set que deben mantenerse (porque serían parte de la interfaz pública) incluso si se cambia la implementación interna.
Nota: Esto NO interrumpe la encapsulación, pero sí une estrechamente a los operadores de flujo a la implementación de la clase Plop (es decir, cualquier cambio en la implementación de la clase Plop requerirá un cambio en la implementación de los operadores de flujo). Pero esto se espera. Todas las partes de la interfaz pública (incluidos los métodos públicos / protegidos) están estrechamente vinculadas a la implementación.
Pero Nota: Usted ha documentado explícitamente este enlace como parte de la declaración de clase.
Nota: No me referiría a friend como la forma preferida de exponer datos privados. El uso excesivo de amigos puede ser tan malo como exponer la implementación. Al igual que todas las características del lenguaje, debe usarse con prudencia.
fuente