204 __ __________Часть II. Программирование на C++
Элементы класса определяют, какую информацию объекты класса могут "помнить" (а функции описывают деятельность, которую может выполнять объект). Каждый экземпляр класса, или, иначе говоря, объект, обладает полной копией каждого элемента как данных, так и функций. Получается очень стройная картина, пока вы не вздумаете определить какие-либо элементы как статические.
Ключевое слово static при использовании его с классами означает, что все объекты этого типа делят друг с другом один и тот же статический элемент. На рис. 9.1 показан класс без статических элементов. Класс, изображенный на рис. 9-2, наоборот, включает в себя статический элемент.
class NoStatic
(
//...
int notStatic;
};
NoStatic a, b, c;
// У всех есть своя собственная копия целой переменной notStatic // Изменение одной из них не влияет на другие
Рис. 9.1. Иллюстрация класса, не содержащего статических элементов (мы видим только целочисленный член). Каждый экземпляр класса, называемый объектом, имеет свою копию этого целочисленного элемента
class HasStatic
(
//. . .
static int isStatic;
(;
HasStatic a, b, c;
// В каждом объекте содержится один и тот же статический элемент // Если значение статического элемента меняется а одном объекте, // то оно меняется и во всех остальных.
Рис. 9.2. Адрес статического элемента класса во всех объектах один и тот же