Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Статические данные-члены класса






Каждый объект класса имеет свою копию данных - членов класса. Иногда необходимо, чтобы все объекты одного класса имели доступ к какой-то общей переменной, а не к копии переменной в каждом объекте. Эта переменная может быть флажком условия, указателем на программу обработки ошибок для класса и т.д. Другими словами, в статических переменных удобно хранить общие характеристики класса.

Чтобы данное-член класса разделялось всеми объектами данного класса и хранилось в одном месте, его надо объявить со спецификатором класса памяти static.

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

Доступ к статическому члену класса выполняется, как и к любому другому члену класса; на статические члены класса распространяются правила видимости private, public и protected. Поэтому, если статический член объявлен, например, в личной части класса, получить доступ к нему можно лишь с помощью функций-членов этого класса (или привилегированных функций).

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

Статические функции-члены класса

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

класса.

Особенностью статических функций-членов класса является следующее:

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



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

mylektsii.su - Мои Лекции - 2015-2024 год. (0.005 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал