Программирование на языке высокого уровня. Марапулец Ю.В. - 85 стр.

UptoLike

Составители: 

методы этого класса могут быть описаны только внутри класса;
если один класс вложен в другой класс, они не имеют каких-либо особых прав дос-
тупа к элементам друг друга и могут обращаться к ним только по общим правилам.
Ключевое слово this. Нестатические функции-члены класса оперируют с тем объ-
ектом типа класса, из которого они вызваны. Например, пусть х есть объект класса X.
Тогда, функция f - член класса X, вызываемая x
.f() оперирует с объектом х. Возникает
вопрос, каким образом в теле функции f определить тот объект класса, который вызвал
функцию f ? Ключевое слово this обозначает специальную локальную переменную, дос-
тупную в теле любой функции - члена класса, описанной без спецификации static. Пере-
менная this не требует описания и всегда содержит указатель соответствующего объекта.
Например, при вызове x.f() переменная this устанавливается в &х.
Статические элементы класса.
С помощью модификатора static можно описать
статические поля и методы класса. Их можно рассматривать как глобальные переменные
или функции, доступные только в пределах области класса.
Статические поля применяются для хранения данных, общих для всех объектов
класса, например, количества объектов или ссылки на разделяемый всеми объектами ре-
сурс. Эти поля существуют для всех объектов класса в единственном экземпляре, то есть
не дублируются. Например:
class A
{
public:
static int count; // Объявление в классе
};
Ниже перечислены особенности статических полей.
Память под статическое поле выделяется один раз при его инициализации независи-
мо от числа созданных объектов (и даже при их отсутствии) и инициализируется с
помощью операции доступа к области действия, а не операции выбора (определение
должно быть записано вне функций).
Статические поля доступны как через имя класса, так и через имя объекта.
На статические поля распространяется действие спецификаторов доступа, поэтому
статические поля, описанные как private, нельзя изменить с помощью операции дос-
тупа к области действия, как описано выше. Это можно сделать только с помощью
статических методов (см. далее).
Память, занимаемая статическим полем, не учитывается при определении размера
объекта с помощью операции sizeof.
Статические методы предназначены для обращения к статическим полям класса.
Они могут обращаться непосредственно только к статическим полям и вызывать только
другие статические методы класса, потому что им не передается скрытый указатель this.
Обращение к статическим методам производится так же, как к статическим полям - либо
через имя класса, либо, если хотя бы один объект класса уже создан, через имя объекта.
Пример:
class A
{
static int count; // Поле count - скрытое
public:
static void inc_count()
{
85
•   методы этого класса могут быть описаны только внутри класса;
•   если один класс вложен в другой класс, они не имеют каких-либо особых прав дос-
    тупа к элементам друг друга и могут обращаться к ним только по общим правилам.

     Ключевое слово this. Нестатические функции-члены класса оперируют с тем объ-
ектом типа класса, из которого они вызваны. Например, пусть х есть объект класса X.
Тогда, функция f - член класса X, вызываемая x.f() оперирует с объектом х. Возникает
вопрос, каким образом в теле функции f определить тот объект класса, который вызвал
функцию f ? Ключевое слово this обозначает специальную локальную переменную, дос-
тупную в теле любой функции - члена класса, описанной без спецификации static. Пере-
менная this не требует описания и всегда содержит указатель соответствующего объекта.
Например, при вызове x.f() переменная this устанавливается в &х.

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

class A
{
      public:
        static int count; // Объявление в классе
};

     Ниже перечислены особенности статических полей.
• Память под статическое поле выделяется один раз при его инициализации независи-
   мо от числа созданных объектов (и даже при их отсутствии) и инициализируется с
   помощью операции доступа к области действия, а не операции выбора (определение
   должно быть записано вне функций).
• Статические поля доступны как через имя класса, так и через имя объекта.
• На статические поля распространяется действие спецификаторов доступа, поэтому
   статические поля, описанные как private, нельзя изменить с помощью операции дос-
   тупа к области действия, как описано выше. Это можно сделать только с помощью
   статических методов (см. далее).
• Память, занимаемая статическим полем, не учитывается при определении размера
   объекта с помощью операции sizeof.
     Статические методы предназначены для обращения к статическим полям класса.
Они могут обращаться непосредственно только к статическим полям и вызывать только
другие статические методы класса, потому что им не передается скрытый указатель this.
Обращение к статическим методам производится так же, как к статическим полям - либо
через имя класса, либо, если хотя бы один объект класса уже создан, через имя объекта.
Пример:

class A
{
      static int count; // Поле count - скрытое
     public:
      static void inc_count()
      {

                                              85