Пример 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;
}