Статические элементы класса



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

Статические поля

Статические поля применяются для хранения данных, общих для всех объектов класса, например, количества объектов или ссылки на разделяемый всеми объектами ресурс. Эти поля существуют для всех объектов класса в единственном экземпляре, то есть не дублируются.

Свойства статических полей:

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

#include <iostream.h>

Class Example

{public:

static int value; //объявление в классе

};

int Example::value; //определение статического поля в глобальной области, по умолчанию инициализируется нулем.

// int Example::value=10; //пример инициализации произвольным значением

2) статические поля доступны как через имя класса, так и через имя объекта

Example object1, *object2;

cout<<Example::value<<object1.value<< object2->value;

 

3) на статические поля распространяется действие спецификаторов доступа, поэтому статические поля, описанные как private, нельзя изменить с помощью операции доступа к области действия; это можно сделать только с помощью статических методов;

4) память, занимаемая статическим полем, не учитывается при определении размера с помощью операции sizeof.

Статические методы

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

#include <iostream.h>

Class Simple

{public:

static int sum(int v1, int v2) {return v2+v1;}

};

void main()


Дата добавления: 2015-12-18; просмотров: 16; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!