ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 6) онлайн
Пример использования статических полей класса
Следующий пример, STATDATA, иллюстрирует простое применение статического поля класса:
// statdata.cpp
// статические данные класса
#include <iostream>
using namespace std;
//////////////////////////////////////////////////////////
class foo
{
private:
static int count; // общее поле для всех объектов
// (в смысле "объявления")
public:
foo() // инкрементирование при создании объекта
{ count++; }
int getcount() // возвращает значение count
{ return count; }
};
//--------------------------------------------------------
int foo::count = 0; // *определение* count
//////////////////////////////////////////////////////////
int main()
{
foo f1, f2, f3; // создание трех объектов
// каждый объект видит одно и то же значение
cout << "Число объектов: " << f1.getcount() << endl;
cout << "Число объектов: " << f2.getcount() << endl;
cout << "Число объектов: " << f3.getcount() << endl;
return 0;
}
В этом примере класс foo содержит единственное поле count, имеющее тип static int. Конструктор класса инкрементирует значение поля count. В функции main() мы определяем три объекта класса foo. Поскольку конструктор в этом случае вызывается трижды, инкрементирование поля count также происходит трижды. Метод getcount() возвращает значение count. Мы вызываем этот метод для каждого из объектов, и во всех случаях он возвращает одну и ту же величину:
Число объектов: 3 Число объектов: 3 Число объектов: 3
Если бы мы использовали не статическое, а автоматическое поле count, то конструктор увеличивал бы на единицу значение этого поля для каждого объек- та, и результат работы программы выглядел бы следующим образом:
Число объектов: 1 Число объектов: 1 Число объектов: 1
Статические поля класса применяются гораздо реже, чем автоматические, однако существует немало ситуаций, где их использование удобно. Сравнение статических и автоматических полей класса проиллюстрировано на рис. 6.9.
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
Схожі підручники
- ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 12) онлайн
- питання з курсу Інвестування
- Методичні вказівки до виконання практичного заняття на тему «Транспортна задача»
- Прежде чем начать СВОЙ БИЗНЕС (онлайн)
- конспект з курсу Філософія
- Хрестоматія з Філософії (частина 1) (онлайн)
