Перейти к основному содержимому

Пример 3. Статические члены класса

предупреждение

Обратите внимание на то, что счетчик total используется для демонстрации жизненного цикла экземпляров класса gamma. Также он может быть полезен для отладки того, что вы правильно очищайте память после использования динамического выделения памяти (пара new и delete).

Поэтому:

  • Не используйте счетчик total для того, чтобы узнать текущее количество элементов в вашей БД.
  • Не используйте значение параметра id для того, чтобы идентифицировать объект в вашей БД. Для идентификации используйте порядковый номер вашего объекта в БД и/или иную информацию, например, название объекта.
// overload.cpp  -  запись  структур в  файл перегруженной
// операцией <<
#include <iostream>

using namespace std;

class gamma {
private:
static int total; //всего объектов
//(только объявление)
int id; //ID текущего объекта
public:
gamma() //конструктор без аргументов
{
total++; //увеличить счетчик объектов
id = total; //id равен текущему значению total
cout << "Создание ID " << id << endl;
}

~gamma() //деструктор
{
total--;
cout << "Удаление ID " << id << endl;
}

static void showtotal() // статическая функция
{
cout << "\nBcero: " << total << endl;
}

void showID() // нестатическая функция
{
cout << "\nID: " << id << endl;
}
};

//---------------------------------
int gamma::total = 0;

int main() {
gamma::showtotal();
gamma g1;
g1.showtotal();
gamma g2;
gamma g3;
g3.showtotal();
g1.showID();
g2.showID();
g3.showID();
cout << "Конец программы" << endl;
return 0;
}