Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT | страница 14
Статические методы имеют одну интересную особенность – вы можете вызывать их даже без создания объектов класса. Чтобы вызвать из программы статический метод, вы должны указать его полное имя, включая имя класса.
Ниже представлен класс Circle, в котором определена статический метод GetPi. Он используется для получения значения статического элемента класса fPi.
>class Circle {
>public:
>static void GetPi()
>{ return fPi; }
>private:
>static float fPi;
>};
>float Circle::fPi = 3.1415;
Вы можете вызвать метод GetPi следующим образом:
>float fNumber;
>fNumber = Circle::GetPi();
Обратите внимание, что объект класса Circle не создается.
Общие члены объектов класса
Иногда удобно, чтобы все объекты данного класса имели общие элементы данных, которые используются совместно. За счет этого можно существенно сократить количество глобальных переменных, улучшая структуру программы.
Общие элементы данных класса следует объявить с ключевым словом static. Все общие элементы класса надо определить в тексте программы, зарезервировав за ними место в оперативной памяти:
>class CWindow {
>public:
> int xLeftTop, xRightBottom;
> int yLeftTop, yRightBottom;
> static char title[80];
> void SetTitle(char*);
>};
>char Cwindow::title[80] = "заголовок окна";
Каждый объект класса Cwindow будет иметь уникальные координаты, определяемые элементами данных xLeftTop, xRightBottom, yLeftTop, yRightBottom и одинаковый заголовок, хранимый элементом данных title.
Общие элементы данных находятся в области действия своего класса. Методы класса могут обращаться к общим элементам точно так же, как к остальным данным из класса:
>void SetTitle(char* sSource) {
> strcpy(title, sSource);
>}
Чтобы получить доступ к общим элементам из программы, надо объявить их как public. Для обращения к такой переменной перед ее именем надо указать имя класса и оператор ::.
>printf(Cwindow::title);
Доступ к элементам класса из программы и других классов ограничен. Вы можете непосредственно обращаться только к элементам класса, определенным или описанным после ключевого слова public. Однако, в некоторых случаях, требуется определить функцию вне класса или другой класс, методы которого могут обращаться непосредственно ко всем элементам класса, включая элементы объявленные как private и protect.
В Си++ вы можете определить для класса так называемую дружественную функцию, воспользовавшись ключевым словом friend. В классе содержится только объявление дружественной функции. Ее определение расположено вне класса. Вы можете объявить дружественную функцию в любой секции класса – public, private или protect.