Diferencia entre la función estática y la función amiga en C++

Función estática : es básicamente una función miembro que se puede llamar incluso cuando el objeto de la clase no se inicializa. Estas funciones están asociadas con cualquier objeto y se utilizan para mantener una única copia de la función miembro de la clase en diferentes objetos de la clase. Esta función se denota mediante el uso de la palabra clave estática.

Función de amigo : es básicamente una función que se requiere especialmente para acceder a miembros no públicos de la clase. Tiene derecho a acceder a todos los miembros privados y protegidos de la clase. Por lo general, proporciona alguna funcionalidad adicional que normalmente no es utilizada por la clase y permite compartir información de clase por parte de funciones que no son miembros.

Diferencia tabular entre función estática y función amiga :

función estática

Función amigo

Es una función miembro de una clase que se llama incluso cuando el objeto de la clase no está inicializado. Es una función que se declara fuera del alcance de la clase.
En este, no puede acceder a ninguna variable de su clase excepto a las variables estáticas. En esto, puede acceder a miembros públicos y privados de la clase.
Se denota colocando una palabra clave estática antes del nombre de la función. Se denota colocando una palabra clave de amigo antes del nombre de la función.
Esta función generalmente se usa para hacer que los miembros de la función sean independientes de cualquier objeto particular de la clase. Esta función se usa generalmente para acceder a miembros no públicos de la clase.
Estas funciones normalmente se usan cuando se quiere una función que sea la misma para cada instancia de la clase.  Estas funciones se utilizan normalmente para compartir información de clase que estaba oculta previamente.
Puede tener acceso a miembros de una clase.   Puede tener acceso a miembros de varias clases.  
No se puede utilizar cuando se necesita sobrecargar a los operadores.   Se puede usar cuando se necesita sobrecargar operaciones porque los operadores de sobrecarga solo se pueden hacer a través de amigos o miembros no estáticos.  
También se puede usar si la función no necesita leer, cambiar o modificar el estado de una instancia particular de la clase o si se necesita usar un puntero de función a una función miembro de la clase.   También se puede usar cuando se quiere crear código que no sea miembro de la clase y que no deba ser miembro de su clase.  
Esta función se puede ocultar detrás de los privilegios.   Esta función no se puede ocultar y cualquiera puede llamar a la función de amigo.  
Está asociado a una clase y no a un objeto.   Se declara en clase pero no pertenece a la clase.

Publicación traducida automáticamente

Artículo escrito por madhurihammad y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *