protected (C++)

Sintaxe

protected:
   [member-list]
protected base-class

Comentários

A palavra-chave protected especifica o acesso aos membros da classe member-list até o próximo especificador de acesso (public ou private) ou no final da definição da classe. Os membros de classe declarados como protected podem ser usados somente por:

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

  • Friends da classe que declarou originalmente esses membros.

  • Classes derivadas com acesso público ou protegido da classe que declarou originalmente esses membros.

  • Direcionar classes derivadas de modo particular que também têm acesso aos membros protegidos.

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

Os membros protegidos não são tão particulares quanto os membros private, que podem ser acessados somente por membros da classe na qual são declarados, mas eles não são tão públicos quanto os membros public, que podem ser acessados em qualquer função.

Os membros protegidos que também são declarados como static podem ser acessados por qualquer friend ou função de membro de uma classe derivada. Os membros protegidos que não são declarados como static podem ser acessados por friends e funções de membro em uma classe derivada somente por meio de um ponteiro, uma referência ou um objeto da classe derivada.

Para obter informações relacionadas, confira friend, público, particular e a tabela de acesso de membros em Como controlar o acesso aos membros da classe.

Específico do /clr

Nos tipos de CLR, as palavras-chave do especificador de acesso de C++ (public, private e protected) podem afetar a visibilidade dos tipos e métodos em relação aos assemblies. Para obter mais informações, confira Controle de acesso a membros.

Observação

Os arquivos compilados com /LN não são afetados por esse comportamento. Nesse caso, todas as classes gerenciadas (públicas ou particulares) serão visíveis.

Específico de END /clr

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 the derived class
}

Confira também

Controlando o acesso a membros de classe
Palavras-chave