ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 11) онлайн
Статические функции
Если вы откроете главу 6 «Объекты и классы», то сможете найти там пример
STATIC, в котором было дано представление о статических данных. Напоминаем,
что статические данные не дублируются для каждого объекта. Скорее, один эле-
мент данных используется всеми объектами класса. В том же примере был пока-
зан класс, который запоминал, сколько у него было объектов. Давайте попробуем
расширить эту идею, показав, что функции, как и данные, могут быть статиче-
скими. Кроме демонстрации статических функций, наша программа создаст
класс, который присваивает идентификационный номер (ID) каждому из своих
объектов. Это позволяет спросить у объекта, кто он таков, что, кроме всего про-
чего, бывает полезно при отладке программ. Еще одна задача этого примера со-
стоит в том, чтобы пролить свет на деструкторы и работу с ними.
Листинг 11.15. Программа STATFUNC
// statfunc.cpp
// Статические функции и ID объектов
#include <iostream>
using namespace std;
///////////////////////////////////////////////////////////
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;
}
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
Схожі підручники
- ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 4) онлайн
- ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 10) онлайн
- Белая книга (частина 2) (онлайн)
- ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 3) онлайн
- Загальні питання з курсу «Теорія ймовірності та Математичної статистики»
- Історія економіки та економічної думки
