¿Cuál es la diferencia entre los miembros privados y protegidos de las clases de C ++?

¿Cuál es la diferencia entre los miembros privados y protegidos de las clases de C ++?
C ++ es un lenguaje de programación orientado a objetos (OOP) que proporciona un mecanismo para encapsular datos y funciones en una sola entidad llamada clase. Una de las características esenciales de la clase es la capacidad de especificar el nivel de acceso para sus miembros. En programación orientada a objetos, Especificadores de acceso se utilizan para controlar la visibilidad y la accesibilidad de los campos y métodos de una clase. Protegido, público, y privado Los niveles de acceso son los tres tipos básicos de niveles de acceso en C++.

En este artículo, discutiremos la diferencia entre los dos principales Especificador de accesos, privado y protegido miembros de una clase C ++.

Especificador de acceso privado

Miembros privados se declaran utilizando la palabra clave 'privado'. El Especificador de acceso privado limita el acceso a los miembros de la clase solo a la clase misma. El código fuera de la clase no puede acceder o alterar a un miembro privado. Eso significa que solo los métodos declarados en la clase pueden acceder y operar en el miembros privados, ni siquiera las clases derivadas pueden acceder miembros privados. Un uso común de miembros privados es asegurar el funcionamiento correcto de una clase. Miembros privados se utilizan para encapsular los datos de la clase y proporcionar un nivel de abstracción a los usuarios de la clase.

#incluir
usando el espacio de nombres STD;
Jugador de clase
privado:
nombre de cadena;
int Age;
público:
nulo getPlayer ()

cout << "Enter name: ";
cin >> nombre;
cout << "Enter age: ";
Cin >> edad;

void showplayer ()

cout << "Name: " << name << endl;
cout << "Age: " << age << endl;

;
int main ()

Jugador PL;
por favor.getPlayer ();
por favor.showplayer ();
regresar 0;

En el código anterior, utilizamos los métodos de miembro público getPlayer () y showplayer () Para acceder a los dos privado miembros nombre y edad. El getPlayer () La función obtiene la entrada de los usuarios y la muestra en la pantalla a través de showplayer () función.

Producción

Especificador de acceso protegido

Miembros protegidos de una clase puede acceder a las clases derivadas y las funciones miembros de la clase misma. Miembros protegidos se utilizan para proporcionar un nivel de acceso a las clases derivadas sin exponer los detalles de implementación al mundo exterior. Miembros protegidos se declaran utilizando la palabra clave 'protegido' y el colon (:) personaje. Miembros protegidos Permitir que una clase se extienda y modifique, sin comprometer su integridad. Una clase derivada puede usar miembros protegidos para refinar o personalizar el comportamiento de una clase base.

Aquí hay un ejemplo de una clase con miembros protegidos:

#incluir
usando el espacio de nombres STD;
Jugador de clase
privado:
nombre de cadena;
int Age;
protegido:
Int Objetivos;
público:
nulo getPlayer ()

nombre de cout;
edad de cout;

void showplayer ()

cout << "Name: " << name << endl;
cout << "Age: " << age << endl;

;
Clase Player1: Public Player
privado:
país de cuerda;
público:
void set_goals (int g)

Objetivos = g;

nulo getPlayer1 ()

getPlayer ();
País de Cout;

nulo showplayer1 ()

cout << "goals: " << goals << endl;
showplayer ();
cout << "Country: " << country << endl;

;
int main ()

Jugador1 PL;
por favor.set_goals (101);
por favor.getPlayer1 ();
por favor.showplayer1 ();
regresar 0;

El jugador La clase comprende dos miembros privados, nombre y edad, uno protegido miembro, objetivos, y privado Los miembros se utilizan dentro del público Funciones para miembros, getPlayer () y showplayer (). Hay dos clases, jugador y Jugador 1, Ambos que son clases base. Uno privado miembro, país, y tres público Los métodos de los miembros constituyen el Jugador 1 clase. Fijar metas() se usa para cambiar el miembro protegido objetivos' valor. getPlayer1 () Llama al getPlayer () Función miembro del jugador clase mientras recupera además la entrada para el país. Similar a ésto, showplayer1 () Llama al showplayer () función miembro e imprime el objetivos y país valores.

Producción

Diferencia entre los miembros privados y protegidos de las clases de C ++

Aquí se enumeran algunas de las diferencias clave entre Privado y Protegido miembros de clases de C ++.

1: alcance y funcionalidad

Al considerar el uso de los especificadores de acceso, es crucial pensar cuidadosamente sobre el alcance y funcionalidad Del programa. A Especificador de acceso privado proporciona el más alto nivel de seguridad y evita el acceso no deseado a variables y métodos. Por otro lado, un Especificador de acceso protegido Ofrece una gama más amplia de accesibilidad y flexibilidad, que es esencial cuando planea heredar clases derivadas de una clase base.

2: Nivel de acceso

La principal diferencia entre privado y miembros protegidos es el nivel de acceso que proporcionan. Protegido Los miembros pueden ser accesibles para las clases derivadas de la clase y las funciones de los miembros, pero privado Los miembros solo pueden ser obtenidos por las funciones de los miembros de la clase.

3: Encapsulación de la clase

Otra diferencia crucial entre privado y protegido Los miembros es su papel en el mantenimiento de la encapsulación de la clase. Para aislar los datos y proporcionar a los usuarios de la clase cierto nivel de abstracción, privado Los miembros están empleados. Protegido Los miembros están empleados para administrar la estructura de herencia y proporcionar acceso a los miembros de la clase base mediante clases derivadas.

Pensamientos finales

Privado y miembros protegidos son los dos niveles de acceso esenciales en la clase C ++. El privado El especificador de acceso hace que los miembros de la clase sean inaccesibles para todos los usuarios externos, y se utiliza para mantener la información privado Dentro de la clase. En contraste, un protegido El especificador de acceso permite el acceso a los miembros de la clase solo por clases derivadas, se utiliza para proporcionar funcionalidad de clase base y permite modificar sin cambiar el comportamiento de la clase base. El nivel de acceso de los miembros de la clase juega un papel crucial en el mantenimiento de la encapsulación de la clase y proporciona un nivel de acceso a los usuarios de la clase.