-
Cómo ocultar implementación de los objetos en C ++
-
En el mundo de C ++, productores y programadores de bibliotecas de cliente utilizan las bibliotecas para armar aplicaciones que son a menudo más grandes bibliotecas. Bibliotecas consisten en clases. Una clase C ++ tiene características de control de acceso que definen los límites estrictos entre el productor clase y el programador cliente. Estos son necesarios para mantener el programador cliente entre en contacto con las secciones críticas de código y para que los productores de la biblioteca para hacer cambios internos sin notificación.
Instrucciones
1 Entender los especificadores de acceso proporcionados por C ++ que determinan los límites de clase. Estos son indicados por las palabras clave explícitas "público", "privado" y "protegido". Mediante la identificación de una función miembro de una de estas palabras clave, puede controlar el nivel de acceso de esa función miembro.
2 Usar la palabra clave "pública" para hacer una definición disponible para cualquier persona, incluyendo el programador cliente.
3 Aplicar la palabra clave "privado" cuando no desea que nadie además de usted mismo para acceder a una definición de clase. las definiciones particulares sólo se puede acceder a otras funciones miembros que pertenecen a la clase en cuestión. Piense en "privado" como un firewall que protege la implementación interna de una definición de un programador cliente.
4 Declarar una definición "protegido" cuando sólo desea heredar clases para acceder a esa definición. La herencia de clases o clases que se derivan funcionalidad de una clase no puede acceder a las definiciones particulares, pero pueden acceder a las definiciones marcados como protegidos.
5 Consulte el ejemplo siguiente para obtener una mejor comprensión de los pasos 2 a 4 y de control de acceso:
CFile clase {público:
int abierta (const char * filename);
privado:
FileExists bool () const;
protegido:
int PixelCount ();
};
// Función privada "FileExists" pueden ser utilizados por las funciones miembro en la definición
int CFile :: Open (const char * filename) {
si es cierto (== CFile :: FileExists ())
lanzar ...
}
// Heredar clase puede usar una función protegida "PixelCount" de la clase base
clase CImageFile: {CFile pública
público:
SomeFunc void () {
int x = CFile :: PixelCount ();
};
};
// Área de ejecución
int main () {
CFile archivo;
file.Open (referral.txt);
if (File.Exists cierto == ()) // error del compilador
int x = file.PixelCount; // Error del compilador
}
Consejos y advertencias
- Los términos "definición" y "funciones miembro" se usan indistintamente en este artículo.
- El código mostrado en el paso 5 no se compilará. Es sólo para fines ilustrativos.