protected (C++)

Синтаксис

protected:
   [member-list]
protected base-class

Замечания

Ключевое слово protected указывает доступ к членам класса в списке членов до следующего описателя доступа (publicили) или privateконца определения класса. Члены класса, объявленные как protected можно использовать только следующим образом:

  • Функции-члены класса, который изначально объявил эти элементы.

  • Дружественные элементы класса, который изначально объявил эти элементы.

  • Классы, производные с использованием открытого или защищенного доступа от класса, который изначально объявил эти элементы.

  • Прямые производные с использованием закрытого доступа классы, которые также имеют закрытый доступ к защищенным элементам.

При выполнении имени базового класса ключевое слово указывает, что общедоступные и защищенные члены базового класса protected защищены членами производных классов.

Защищенные члены не так закрыты private , как члены, которые доступны только членам класса, в котором они объявлены, но они не как открытые public , как члены, которые доступны в любой функции.

Защищенные члены, которые также объявлены static как доступны любому другому или члену функции производного класса. Защищенные члены, которые не объявлены как static доступны для друзей и функций-членов в производном классе только через указатель на, ссылку на или объект производного класса.

Дополнительные сведения см. в таблице "Друг", "Общедоступный", "Частный" и "Доступ к членам" в разделе "Управление доступом к членам класса".

Специально для /clr

В типах СРЕДЫ CLR описатель доступа C++ ключевое слово (public, privateиprotected) может повлиять на видимость типов и методов в отношении сборок. Дополнительные сведения см. в разделе "Члены контроль доступа".

Примечание.

Файлы, скомпилированные с помощью /LN , не влияют на это поведение. В этом случае все управляемые классы (открытые или закрытые) будут видны.

КОНЕЦ специально для /clr

Пример

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

См. также

Управление доступом к членам классов
Ключевые слова