Tecnología

Inicio

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.