protected (C++)

Sintaxis

protected:
   [member-list]
protected base-class

Comentarios

La palabra clave protected especifica el acceso a los miembros de clase en member-list hasta el especificador de acceso siguiente (public o private) o el final de la definición de clase. Los miembros de clase declarados como protected solo los pueden usar los elementos siguientes:

  • Funciones miembro de la clase que declaró originalmente estos miembros.

  • Objetos friend de la clase que declaró originalmente estos miembros.

  • Clases derivadas con acceso público o protegido desde la clase que declaró originalmente estos miembros.

  • Clases directas derivadas de forma privada que también tienen acceso privado a miembros protegidos.

Cuando precede al nombre de una clase base, la palabra clave protected especifica que los miembros públicos y protegidos de la clase base son miembros protegidos de sus clases derivadas.

Los miembros protegidos no son tan privados como los miembros private, que solo son accesibles a los miembros de la clase en la que se declaran, pero no son tan públicos como los miembros public, que son accesibles en cualquier función.

Los miembros protegidos que también se declaran como static son accesibles a cualquier función miembro o friend de una clase derivada. Los miembros protegidos que no se declaran como static son accesibles a las funciones miembro y friend de una clase derivada solo mediante un objeto de la clase derivada, un puntero a esta o una referencia a esta.

Para obtener información relacionada, consulte friend, public, private y la tabla de acceso a miembros en Control de acceso a miembros de clase.

Específicos de /clr

En los tipos de CLR, las palabras clave del especificador de acceso de C++ (public, private y protected) pueden afectar a la visibilidad de los tipos y los métodos con respecto a los ensamblados. Para obtener más información, consulte Control de acceso a miembros.

Nota:

Los archivos compilados con /LN no se ven afectados por este comportamiento. En este caso, todas las clases administradas (ya sean públicas o privadas) estarán visibles.

Específicos de END /clr

Ejemplo

// keyword_protected.cpp
// compile with: /EHsc
#include <iostream>

using namespace std;
class X {
public:
   void setProtMemb( int i ) { m_protMemb = i; }
   void Display() { cout << m_protMemb << endl; }
protected:
   int  m_protMemb;
   void Protfunc() { cout << "\nAccess allowed\n"; }
} x;

class Y : public X {
public:
   void useProtfunc() { Protfunc(); }
} y;

int main() {
   // x.m_protMemb;         error, m_protMemb is protected
   x.setProtMemb( 0 );   // OK, uses public access function
   x.Display();
   y.setProtMemb( 5 );   // OK, uses public access function
   y.Display();
   // x.Protfunc();         error, Protfunc() is protected
   y.useProtfunc();      // OK, uses public access function
                         // in the derived class
}

Vea también

Controlar el acceso a los miembros de clase
Palabras clave