Modificadores de acceso de C ++

En este tutorial, aprenderemos sobre los modificadores de acceso para clases de C ++ con la ayuda de ejemplos. Los modificadores de acceso de C ++ son públicos, privados y protegidos.

Una de las principales características de los lenguajes de programación orientados a objetos como C ++ es la ocultación de datos .

La ocultación de datos se refiere a restringir el acceso a los miembros de datos de una clase. Esto es para evitar que otras funciones y clases alteren los datos de la clase.

Sin embargo, también es importante hacer accesibles algunas funciones y datos de miembros para que los datos ocultos puedan manipularse indirectamente.

Los modificadores de acceso de C ++ nos permiten determinar qué miembros de la clase son accesibles para otras clases y funciones y cuáles no.

Por ejemplo,

 class Patient ( private: int patientNumber; string diagnosis; public: void billing() ( // code ) void makeAppointment() ( // code ) ); 

Aquí, las variables PatientNumber y el diagnóstico de la Patientclase se ocultan usando la privatepalabra clave, mientras que las funciones miembro se hacen accesibles usando la publicpalabra clave.

Tipos de modificadores de acceso de C ++

En C ++, hay 3 modificadores de acceso:

  • public
  • private
  • protected

Modificador de acceso público

  • La publicpalabra clave se utiliza para crear miembros públicos (datos y funciones).
  • Los miembros del público son accesibles desde cualquier parte del programa.

Ejemplo 1: Modificador de acceso público de C ++

 #include using namespace std; // define a class class Sample ( // public elements public: int age; void displayAge() ( cout << "Age = " << age << endl; ) ); int main() ( // declare a class object Sample obj1; cout <> obj1.age; // call class function obj1.displayAge(); return 0; )

Salida:

 Ingrese su edad: 20 Edad = 20

En este programa, hemos creado una clase llamada Sample, que contiene una publicvariable age y una publicfunción displayAge().

En main(), hemos creado un objeto de la Sampleclase llamado obj1. Luego accedemos a los elementos públicos directamente usando los códigos obj.agey obj.displayAge().

Modificador de acceso privado

  • La privatepalabra clave se utiliza para crear miembros privados (datos y funciones).
  • Solo se puede acceder a los miembros privados desde dentro de la clase.
  • Sin embargo, las clases de amigos y las funciones de amigos pueden acceder a miembros privados.

Ejemplo 2: Especificador de acceso privado de C ++

 #include using namespace std; // define a class class Sample ( // private elements private: int age; // public elements public: void displayAge(int a) ( age = a; cout << "Age = " << age << endl; ) ); int main() ( int ageInput; // declare an object Sample obj1; cout <> ageInput; // call function and pass ageInput as argument obj1.displayAge(ageInput); return 0; )

Salida:

 Ingrese su edad: 20 Edad = 20

En main(), el objeto obj1 no puede acceder directamente a la variable de clase age.

 // error cin>> obj1.age;

Solo podemos manipular la edad indirectamente a través de la función pública displayAge(), ya que esta función asigna la edad al argumento que se le pasa, es decir, el parámetro de la función int a.

Modificador de acceso protegido

Antes de aprender sobre el protectedespecificador de acceso, asegúrese de conocer la herencia en C ++.

  • La protectedpalabra clave se utiliza para crear miembros protegidos (datos y función).
  • Se puede acceder a los miembros protegidos dentro de la clase y desde la clase derivada.

Ejemplo 3: Especificador de acceso protegido en C ++

 #include using namespace std; // declare parent class class Sample ( // protected elements protected: int age; ); // declare child class class SampleChild : public Sample ( public: void displayAge(int a) ( age = a; cout << "Age = " << age << endl; ) ); int main() ( int ageInput; // declare object of child class SampleChild child; cout <> ageInput; // call child class function // pass ageInput as argument child.displayAge(ageInput); return 0; )

Salida:

 Ingrese su edad: 20 Edad = 20

Aquí, ChildSamplehay una clase heredada que se deriva de Sample. La edad variable se declara Samplecon la protectedpalabra clave.

Esto significa que ChildSamplepuede acceder a age ya que Samplees su clase principal.

Vemos esto porque hemos asignado el valor de edad en ChildSampleaunque la edad se declara en la Sampleclase.

Resumen: público, privado y protegido

  • public Los elementos pueden ser accedidos por todas las demás clases y funciones.
  • privateno se puede acceder a los elementos fuera de la clase en la que están declarados, excepto mediante friendclases y funciones.
  • protectedLos elementos son como el private, excepto que se puede acceder a ellos mediante clases derivadas.
Especificadores Misma clase Clase derivada Fuera de clase
public si si si
private si No No
protected si si No

Nota: De forma predeterminada, los miembros de la clase en C ++ son private, a menos que se especifique lo contrario.

Articulos interesantes...