Compartilhar via


protegido (C++)

protected:
   [member-list]
protected base-class

Comentários

O protected palavra-chave especifica o acesso a membros de classe no lista de membros até o próximo especificador de acesso (pública ou private) ou no final da definição de classe.Membros da classe declarada como protected pode ser usado apenas pelos seguintes motivos:

  • Funções de membro da classe que originalmente declarado esses membros.

  • Amigos da classe que originalmente declarado esses membros.

  • As classes derivadas com acesso público ou protegido da classe que originalmente declarado esses membros.

  • As classes derivadas confidencialmente diretas que também têm acesso privado para os membros protegidos.

Quando precede o nome de uma classe base, o protected palavra-chave especifica que os membros do públicos e protegidos da classe base são membros protegidos de suas classes derivadas.

Membros protegidos não são como particulares, como private membros, que são acessíveis somente aos membros da classe na qual eles são declarados, mas não são como públicos, como pública membros, que podem ser acessados em qualquer função.

Que também são declarados como membros protegidos estático podem ser acessados por qualquer função amigo ou membro de uma classe derivada.Membros que não são declarados como protegidos estático estão acessíveis para amigos e funções de membro em uma classe derivada somente por meio de um ponteiro para fazer referência ao, ou o objeto da classe derivada.

Para obter informações relacionadas, consulte amigo, pública, particulare a tabela de acesso de membro na Controlando o acesso a membros da classe.

/CLR específicos

Em tipos CLR, o C++ palavras-chave do especificador de acesso (pública, private, e protected) podem afetar a visibilidade de tipos e métodos com relação aos módulos (assemblies).Para obter mais informações, consulte Tipo e a visibilidade de membro.

ObservaçãoObservação

Arquivos compilados com /LN não são afetados por esse comportamento.Nesse caso, todas as classes gerenciadas (públicas ou privadas) ficará visíveis.

Exemplo

// 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
}

Consulte também

Referência

Controlando o acesso a membros de classe

Palavras-chave C++