Читайте также: |
|
Статические данные не дублируются для каждого объекта. Скорее, один элемент данных используется всеми объектами класса.
Рассмотрим программу:
class gamma
{ private:
static int total; //всего объектов класса (только объявление)
int id; //ID текущего объекта
public:
gamma() //конструктор без аргументов
{ total++; id = total; } //id равен текущему значению total
~gamma() //деструктор
{ total--; cout << "Удаление ID " << id << endl; }
static void showtotal() // статическая функция
{ cout << "Всего: " << total << endl; }
void showid() // Нестатическая функция
{ cout << "ID: " << id << endl; }
};
//---------------------------------------------------------
int gamma::total = 0; // определение total
///////////////////////////////////////////////////////////
int main()
{
gamma g1;
gamma::showtotal();
gamma g2, g3;
gamma::showtotal();
g1.showid();
g2.showid();
g3.showid();
cout << "----------конец программы----------\n";
return 0;
}
К статической ф-ии можно иметь доступ через имя класса.
Три объекта, которые были созданы в процессе работы, должны быть удалены до ее завершения, чтобы восстановился доступ к памяти. Об этом заботится компилятор, выполняя деструктор.
Дата добавления: 2015-08-17; просмотров: 40 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Дружественные функции. | | | Блок-схемы алгоритмов (линейные структуры, разветвленные структуры, циклические структуры) |