Язык программирования C++ от Страуструпа

Контроль доступа


Член класса может быть частным (private), защищенным (protected) или общим (public):

Частный член класса X могут использовать только функции-члены и друзья класса X.

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

производных от X классов (см. $$5.4.1).

Общий член можно использовать в любой функции.

Эти правила соответствуют делению обращающихся к классу функций на три вида: функции, реализующие класс (его друзья и члены), функции, реализующие производный класс (друзья и члены производного класса) и все остальные функции.

Контроль доступа применяется единообразно ко всем именам. На контроль доступа не влияет, какую именно сущность обозначает имя. Это означает, что частными могут быть функции-члены, константы и т.д. наравне с частными членами, представляющими данные:

class X {

  private:

     enum { A, B };

     void f(int);

     int a;

};

void X::f(int i)

{

  if (i<A) f(i+B);

  a++;

}

void g(X& x)

{

  int i = X::A;     // ошибка: X::A частный член

  x.f(2);           // ошибка: X::f частный член

  x.a++;            // ошибка: X::a частный член

}



Содержание раздела