Introducción a los modificadores de acceso en C ++

La protección de datos ha estado en tendencia durante mucho tiempo, ya que es la parte más importante de cada dominio. Si sale en la mano equivocada, sufrirás mucho. Para manejar sus datos de manera sistemática, la programación orientada a objetos ofrece una característica destacada conocida como ocultación de datos. Este concepto puede implementarse en C ++ utilizando modificadores de acceso. Son palabras clave que se utilizan para establecer la accesibilidad de métodos, clases y otros miembros. Público, privado y protegido se conoce como modificadores de acceso o especificadores de acceso en lenguajes de programación orientados a objetos. Para evitar que las funciones de un programa accedan directamente a la representación interna de una clase, se utiliza la ocultación de datos.

Tipos de modificadores de acceso en C ++

Hay 3 tipos de modificadores de acceso en C ++

  1. Público
  2. Privado
  3. Protegido

Echemos un vistazo a estos modificadores con ejemplos:

1. Público

Como su nombre indica, disponible para todos. Todos los miembros de la clase estarán disponibles para todos después de declararlos como públicos. Se puede acceder a un miembro público en cualquier lugar fuera de la clase pero dentro de un programa. Otras clases también pueden acceder a los miembros de datos si se declaran públicos. Como no hay restricciones en el modificador público, podemos usar el operador de punto (.) Para acceder directamente a las funciones y datos de los miembros.

Código:

#include
using namespace std;
class parent
(
private:
int p;
protected:
int q;
public:
int r;
parent() //constructor to initialize data members
(
p = 100;
q = 200;
r = 300;
)
);
//Inheritance concept
class child: public parent
(
//q becomes protected and r becomes public members of class child
public:
void showdata()
(
cout << "p is not accessible" << endl;
cout << "value of q is " << q << endl;
cout << "value of r is " << r << endl;
)
);
int main()
(
child c; //object of derived class(child)
c.showdata();
//cp = 100; invalid : private member, no access
//cq = 200; invalid : q is now private member of child class
//cr = 300; invalid : r is also now a private member of child class
return 0;
)

Salida:


2. Privado

Un modificador privado es uno de los mejores modificadores de acceso en C ++. El alcance de los miembros de datos privados permanece dentro de la clase, por eso la función dentro de la clase puede acceder a los miembros de la clase declarados como privados. Porque eso es lo que significa privado, solo tú decides quién puede usar tus cosas (como un amigo) o no. No puede acceder a los miembros directamente por ningún objeto o función que esté fuera de la clase. La función de un amigo (como dije puede usar sus cosas) se puede usar para acceder a los datos privados de los miembros de la clase. Obtendrá un error en tiempo de compilación al acceder a miembros de datos privados desde cualquier lugar fuera de la clase.

Código:

#include
using namespace std;
// Defining class
class Circle
( // private data member
private:
double radius;
// public member function
public:
void areaOfCircle(double r)
( // member function can access private
// data member radius
radius = r;
double area = 3.14*radius*radius;
cout << "Radius is: " << radius << endl;
cout << "Area is: " << area;
) );
// Main function
int main()
( // creating class object
Circle c;
/* trying to access private data member
directly outside the class */
c.areaOfCircle(4.5);
return 0;
)

Salida:

Al utilizar el código anterior, podemos acceder a miembros de datos privados de una clase indirectamente usando indirectamente las funciones de miembro público de la clase.

3. Protegido

El último especificador de acceso más importante utilizado como modificadores de acceso en C ++ ya que su comportamiento es bastante similar a un modificador de acceso privado. Los miembros o funciones de datos protegidos no pueden acceder directamente desde otras clases. Puede usar una función de amigo para acceder a los miembros protegidos, ya que permite esta funcionalidad. Existen algunas restricciones en el modificador protegido. Los miembros declarados en protegido solo pueden protegerse hasta el siguiente nivel y luego se vuelven privados.

Código:

#include
using namespace std;
// Base class
class Parent
( // Protected data members
protected:
int id_protect;
);
// Derived class
class Child : public Parent
( public:
void set(int id)
( /* Child class to access the inherited protected data
members of the Base class */
id_protect = id;
)
void display() (
cout << "id_protect is: " << id_protect << endl;
)
);
// Main function
int main() (
Child p;
/* member function(derived class) can easily
access the data members(protected) of the base class */
p.set(07);
p.display();
return 0;
)

Salida:

En el código anterior, puede ver que id_protect se declara como protegido y se puede acceder a él utilizando la función miembro de la clase derivada. Esto significa que puede acceder al miembro de datos protegidos de la clase base utilizando la función miembro de la clase derivada.

Ventajas de los modificadores de acceso en C ++

A continuación se presentan las diferentes ventajas de los modificadores de acceso en C ++:

  • El modificador de acceso le proporciona la autoridad para controlar sus datos según los escenarios. Si está trabajando en un dominio bancario, debe usar miembros de datos privados para mantener sus datos ocultos a otros usuarios, la autoridad está en sus manos. Puede hacerlos públicos si lo desea, pero no será un gran enfoque porque en ese caso, cualquiera puede cambiar sus datos en cualquier momento
  • Todos los miembros públicos de la clase base se convierten en miembros públicos de la clase derivada. Del mismo modo, todos los miembros protegidos de la clase base se convierten en miembros protegidos de la clase derivada, lo que lo ayudará a administrar los datos fácilmente en todos los aspectos porque, como puede ver, no hay cambio en el acceso a estos miembros si usa la herencia pública en su lenguaje de programación .
  • En el escenario de herencia privada, todos los miembros públicos de la clase base se convierten en miembros privados de la clase derivada. Del mismo modo, todos los miembros protegidos de la clase base se convierten en miembros privados de la clase derivada, mientras que, en el escenario de herencia protegida, todos los miembros públicos de la clase base se convierten en miembros protegidos de la clase derivada y todos los miembros protegidos de la clase base se convierten en miembros protegidos de la clase derivada. Tenga en cuenta que en C ++, la especificación de acceso funciona por clase, no por objeto.

Conclusión

Varios lenguajes de programación no tienen acceso privado y protegido, por lo tanto, cualquier usuario puede usarlo de la manera que desee. Los codificadores de C ++ no confiarán en los usuarios, por lo que no pueden usarlo. Como los miembros de datos públicos pueden ser un riesgo potencial grave de errores o piratas informáticos.

Artículos recomendados

Esta es una guía de modificadores de acceso en C ++. Aquí discutimos los tipos de modificadores de acceso en C ++ junto con sus ejemplos y algunas ventajas. También puede consultar los siguientes artículos para obtener más información.

  1. Modificadores de acceso en Java
  2. Encapsulación en C ++
  3. Comandos C ++
  4. Mejor compilador de C ++
  5. Tipos de modificadores de acceso en C #
  6. Encapsulación en JavaScript
  7. Las 11 características y ventajas principales de C ++