C++ Tutorial

C++ INICIO Introducción a C++ C++ Comenzar Sintaxis de C++ Salida C++ Comentarios de C++ Variables C++ Entrada de usuario de C++ Tipos de datos de C++ Operadores de C++ Cadenas C++ Matemáticas C++ Booleanos de C++ Condiciones C++ Cambio de C++ C++ Mientras Bucle C++ para bucle C++ Pausa/Continuar Matrices C++ Referencias de C++ Punteros de C++

Funciones C++

Funciones C++ Parámetros de funciones de C++ Sobrecarga de funciones de C++

Clases C++

C++ Programación orientada a objetos Clases/Objetos C++ Métodos de clase de C++ Constructores C++ Especificadores de acceso de C++ Encapsulación C++ Herencia C++ Polimorfismo de C++ Archivos C++ Excepciones de C++

C++ Cómo

Añadir dos números

Ejemplos de C++

Ejemplos de C++ Compilador de C++ Ejercicios C++ Cuestionario de C++


Especificadores de acceso de C++


Especificadores de acceso

A estas alturas, está bastante familiarizado con la publicpalabra clave que aparece en todos nuestros ejemplos de clase:

Ejemplo

class MyClass {  // The class
  public:        // Access specifier
    // class members goes here
};

La publicpalabra clave es un especificador de acceso. Los especificadores de acceso definen cómo se puede acceder a los miembros (atributos y métodos) de una clase. En el ejemplo anterior, los miembros son public, lo que significa que se puede acceder a ellos y modificarlos desde fuera del código.

Sin embargo, ¿qué pasa si queremos que los miembros sean privados y estén ocultos del mundo exterior?

En C++, hay tres especificadores de acceso:

  • public - los miembros son accesibles desde fuera de la clase
  • private - los miembros no pueden ser accedidos (o vistos) desde fuera de la clase
  • protected- No se puede acceder a los miembros desde fuera de la clase, sin embargo, se puede acceder a ellos en clases heredadas. Aprenderá más sobre Herencia más adelante.

En el siguiente ejemplo, demostramos las diferencias entre los miembros publicy private:

Ejemplo

class MyClass {
  public:    // Public access specifier
    int x;   // Public attribute
  private:   // Private access specifier
    int y;   // Private attribute
};

int main() {
  MyClass myObj;
  myObj.x = 25;  // Allowed (public)
  myObj.y = 50;  // Not allowed (private)
  return 0;
}

Si intenta acceder a un miembro privado, se produce un error:

error: y is private

Nota: es posible acceder a miembros privados de una clase utilizando un método público dentro de la misma clase. Vea el siguiente capítulo ( Encapsulación ) sobre cómo hacer esto.

Sugerencia: se considera una buena práctica declarar los atributos de su clase como privados (con la mayor frecuencia posible). Esto reducirá la posibilidad de que usted (u otros) estropeen el código. Este es también el ingrediente principal del concepto de encapsulación , sobre el que aprenderá más en el próximo capítulo.

Nota: De forma predeterminada, todos los miembros de una clase son private, si no especifica un especificador de acceso:

Ejemplo

class MyClass {
  int x;   // Private attribute
  int y;   // Private attribute
};