protected (C++)
protected:
[member-list]
protected base-class
Comentarios
La palabra clave de protected especifica el acceso a los miembros de clase en la lista de miembros hasta el especificador siguiente de acceso (Público o private) o el final de la definición de clase.Los miembros de clase declarados como protected solamente puede ser utilizado por el siguiente:
Funciones miembro de clase que declaró originalmente a estos miembros.
amigos de la clase que declaró originalmente a estos miembros.
Clases derivadas con public o el acceso protected de la clase que declaró originalmente a estos miembros.
Ejecute privado las clases derivadas que también tienen acceso privado miembros protegidos.
Al incluir el nombre de una clase base, la palabra clave de protected especifica que el público y miembros protegidos de la clase base son miembros protegidos de sus clases derivadas.
Los miembros protegidos no es tan privados como miembros de private , que sólo se puede tener acceso a los miembros de la clase en la que se declararon, pero no es tan públicos como los miembros de Público , que son accesibles en cualquier función.
Miembros protegidos que también se declaran como Estática es accesible a cualquier función friend o miembro de una clase derivada.Miembros protegidos que no se declaran como Estática es accesible para friends y las funciones miembro en una clase derivada sólo a través de un puntero a, referencia a, o un objeto de la clase derivada.
Para obtener información relacionada, vea confianza, Público, private, y la tabla de acceso a miembros en Controlar el acceso a los miembros de clase.
/clr Específico
En los tipos de CLR, las palabras clave de especificador de acceso de C++ (Público, private, y protected) pueden afectar a la visibilidad de los tipos y métodos con respecto a los ensamblados.Para obtener más información, vea Tipos y miembros Visibility.
[!NOTA]
Los archivos compilados con /LN no afecta a este comportamiento.En este caso, todas las clases administradas (public o private) estará visible.
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 derived class
}