Составители:
Рубрика:
• методы этого класса могут быть описаны только внутри класса;
• если один класс вложен в другой класс, они не имеют каких-либо особых прав дос-
тупа к элементам друг друга и могут обращаться к ним только по общим правилам.
Ключевое слово 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
Страницы
- « первая
- ‹ предыдущая
- …
- 83
- 84
- 85
- 86
- 87
- …
- следующая ›
- последняя »
