Переменные и операции класса
В данном примере мы объявили четыре конструктора для того, чтобы иметь возможность задавать дату в сокращенном виде. В крупных проектах количество конструкторов, позволяющее учесть различные варианты использования, может быть намного больше. Обычно для каждого объекта необходима своя копия переменных, описанных в классе. Однако в некоторых ситуациях требуется, чтобы в классе были данные, общие… Читать ещё >
Переменные и операции класса (реферат, курсовая, диплом, контрольная)
Обычно для каждого объекта необходима своя копия переменных, описанных в классе. Однако в некоторых ситуациях требуется, чтобы в классе были данные, общие для всех его экземпляров — переменные класса.
Переменная класса в С++ описывается с ключевым словом static, она создается один раз как часть класса, а не для каждого конкретного экземпляра данного класса. Функция, которой требуется доступ к переменным класса, но не требуется, чтобы она вызывалась для конкретного экземпляра класса, также описывается как статическая (static).
Пример. Опишем класс для работы с датами.
class Date{.
int day;// день.
int month;// месяц.
int year;// год.
public:
Date (int, int, int); // день, месяц, год.
Date (int, int); // день, месяц, текущий год — по умолчанию.
Date (int); // день, текущие месяц и год — по умолчанию.
Date (); // дата по умолчанию — сегодня.
.. .
};
В данном примере мы объявили четыре конструктора для того, чтобы иметь возможность задавать дату в сокращенном виде. В крупных проектах количество конструкторов, позволяющее учесть различные варианты использования, может быть намного больше.
Рассмотрим альтернативное решение. Опишем конструктор с аргументами по умолчанию.
class Date{.
int day, month, year;
static Date default_date;
public:
Date (int d=0, int m=0, int y=0);
.. .
static void set_default (int, int, int);
};
Если значение аргумента является нулевым, следует воспользоваться соответствующим элементом даты, задаваемой по умолчанию — default_date. Поскольку значение default_date должно быть одинаковым для всех объектов класса, данная переменная является статическим членом. Для ее инициализации описана также статическая функция-член set_default. Статические члены — и функции, и данные — должны быть где-то определены. Например,.
Date Date: default_date (1, 1, 2000);
void set_default (int d, int m, int y).
{.
Date: default_date= Date (d, m, y);
}.
Статические члены используются также для реализации на языке С++ утилит. Утилитами называют совокупность глобальных переменных и свободных подпрограмм, сгруппированных в форме объявления класса. В этом случае глобальные переменные и свободные подпрограммы рассматриваются как члены класса, причем именно как статические.
Введение
утилит позволяет приблизить реализацию системы на языке С++ к набору классов и взаимодействующих объектов, как в чисто объектно-ориентированных языках.