Recomendado, 2024

La Elección Del Editor

Diferencia entre privado y protegido en C ++

Hay tres tipos de protección de acceso definidos en el lenguaje de programación C ++ para ocultar los datos. La ocultación de datos es una parte esencial de la programación orientada a objetos. Las palabras clave privadas y protegidas ofrecen el nivel de protección de acceso para ocultar los datos y la función dentro de una clase. Los miembros privados no se pueden heredar, mientras que el miembro protegido se puede heredar pero en un rango limitado. Estos especificadores indican la visibilidad de los miembros donde la privacidad es más restrictiva que protegida.

Gráfica comparativa

Bases para la comparaciónPrivadoProtegido
Heredando propiedad a la clase derivada.
La clase derivada no puede acceder a los miembros privados de la clase base.La clase derivada puede acceder a miembros protegidos de la clase base.
Accesibilidad
Los miembros privados de la clase son inaccesibles fuera del alcance de la clase.Los miembros protegidos de la clase son inaccesibles fuera del alcance de la clase, excepto la clase derivada inmediatamente.
Accesible desde clase propia
Accesible desde clase derivadaNo
Accesible desde el exteriorNoNo

Definición de privado

Los miembros de la clase declarados como privados solo pueden recuperarse dentro de la clase. En otras palabras, a los miembros declarados en la sección privada de la clase solo se puede acceder mediante la función de amigo y la función de miembro de la clase. Los miembros privados no se pueden obtener directamente de la clase derivada y son inaccesibles fuera del alcance de la clase.

El programa C ++ muestra el concepto de especificadores de acceso privado.

 #include usando namespace std; clase A {privado: int i; public: void get () {cout <> i; }}; clase B: público A {público: void show () {i ++; cout << "\ n Su número ingresado después de incrementcpp"> # include using namespace std; clase mamífero {público: vacío mamíferoMétodo (vacío) {cout << "Viene dentro de la categoría de mamífero". < 

En el programa anterior, se crea un objeto de la clase secundaria con el nombre "ob" y se puede acceder a la función miembro de la clase primaria a través del método de clase secundaria "marine_mammalMethod". Aunque, no se puede acceder directamente al método principal con el objeto "ob".

Definición de Protegido

Los miembros de la clase declarados como protegidos en una clase solo pueden ser accesibles a través de la función de miembro y la función de amigo de la clase. No se puede acceder a estos miembros protegidos fuera del alcance de la clase, excepto a la clase secundaria (que se deriva inmediatamente de ella). Sirve el propósito restringido en la herencia y hereda las propiedades de una manera limitada.

El programa de C ++ dado a continuación ilustra el concepto de especificadores de acceso protegido.

 #include usando namespace std; class account1 {protected: int x, y; // accesible para la clase derivada public: void set (int a, int b) {x = a; y = b; } void show () {cout < 

En el ejemplo anterior, la clase secundaria hereda las propiedades de la clase base porque los miembros de los datos se declaran públicos o protegidos. No sería posible si x e y hubieran sido declarados como privados en la clase base.

Diferencias clave entre lo privado y lo protegido en C ++

  1. La palabra clave protegida se puede usar para crear miembros de clase que son privados para su clase, pero la clase derivada puede heredarlos y usarlos. Por el contrario, esto no es posible mientras se usa privado, porque los miembros privados no pueden heredarse directamente en la clase derivada.
  2. Cuando la clase base se hereda utilizando el especificador de acceso privado, hace que todos los miembros públicos y protegidos de la clase base, los miembros privados de la clase derivada. En contra, este no es el caso en los especificadores de acceso protegido.

Conclusión

Privado y protegido son los especificadores de acceso que se utilizan para establecer la visibilidad de la clase y sus miembros de manera diferente. Sin embargo, lo protegido es más flexible que lo privado.

Top