Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция_05_INLINE_STATIC_CONST.doc
Скачиваний:
0
Добавлен:
13.11.2019
Размер:
69.63 Кб
Скачать

Файл Dot.H

class Dot // класс точки

{

double x, y; // координаты точки

public: // открытые члены класса

• • •

// объявление и определение функций

inline double GetX(){return x;} // возвращает значение данного-члена х

inline double GetY(){return y;} // возвращает значение данного-члена y

// объявление функций

void SetX(double X); // устанавливает значение данного-члена х

void SetY(double Y); // устанавливает значение данного-члена y

};

// определение функций

inline void Dot::SetX(double X) {x=X;}

inline void Dot::SetY(double Y) {x=Y;}

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

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

Данное-член класса, определенное с модификатором static:

  • разделяется всеми представителями этого класса;

  • существует только один экземпляр этой переменной.

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

К статическим данным-членам, объявленным в разделе public класса, рекомендуется обращаться с помощью следующей конструкции:

<имя_класса>::<данное_член>

Эта форма обращения отражает тот факт, что соответствующее данное-член является единственным для всего класса.

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

  1. Применяйте статически данные-члены для совместного использования данных несколькими объектами класса;

  2. Ограничьте доступ к статическим данным-членам, объявив их в разделе protected или private.

Рассмотрим пример использования статического данного-члена класса:

Файл Dot.H

class Dot // класс точки

{

static int count;// объявление статического данного-члена – счётчика объектов

public: // открытые члены класса

// конструктор увеличивает счётчик объектов на единицу

Dot (char Name) {name=Name; x=0; y=0; count++;}

~Dot() {count--;} // деструктор уменьшает счётчик объектов на единицу

void PrintCount(); // функция выводит количество существующих объектов

• • •

};

Файл Dot.Cpp

#include "Dot.h" // подключение заголовочного файла класса Dot

void Dot::PrintCount()

{

char S[30];

CharToOem("В памяти существует ", S);

cout<<S<<count;

CharToOem(" объекта типа Dot\n", S);

cout<<S;

}

Файл Main.Cpp

#include "Dot.h" // подключение заголовочного файла класса Dot

int Dot::count=0; // инициализация статического данного-члена

void main()

{

Dot A('A'), B('B'), C('C'); // вызов конструктора Dot ( char Name )

A.PrintCount();

cout<<Dot::count<<'\n'; // ошибка: данное-член count недоступен

}

В этом примере статическое данное-член count содержит количество существующих объектов. Инициализация данного-члена count осуществляется перед выполнением программы и созданием объектов в файле основной программы с помощью оператора: void Dot::PrintCount()

Обратите внимание, что обращение к этому члену класса в функции main() в операторе cout<<Dot::count<<'\n'; приводит к ошибке, поскольку данное-член класса count объявлено как закрытое и является недоступным за пределами класса.

При выполнении программа выводит на экран: