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
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de