Lect04
.pdfСтатическиечленыкласса
Статическиеатрибутыдолжныбыть обязательноинициализированыв глобальномпространствеимён!
Инициализациястатическихатрибутов производитсябезучетаправдоступак ним.
Пример:класс,подсчитывающий количествосвоихобъектов
#include "stdafx.h" #include <iostream> using namespace std;
class AppLogger { private:
static unsigned count; public:
AppLogger() { count++; } ~AppLogger() { count--; }
static unsigned GetCount() { return count; }
};
unsigned AppLogger::count = 0;
Пример:класс,подсчитывающий
количествосвоихобъектов
int _tmain(int argc, _TCHAR* argv[]) {
cout << "Starting count=" << AppLogger::GetCount() << endl;
AppLogger a;
cout << "After 'a' count=" << a.GetCount() << endl;
AppLogger *b = new AppLogger();
cout << "After 'b' count=" << a.GetCount() << endl;
cout << "a.count=" << a.GetCount() << " b.count=" << b->GetCount()
<< " AppLogger::count="
<< AppLogger::GetCount() << endl;
Пример:класс,подсчитывающий количествосвоихобъектов
delete b;
cout << "after delete count="
<< AppLogger::GetCount() << endl; cin.ignore();
return 0;
}
Starting count=0 After 'a' count=1 After 'b' count=2
a.count=2 b.count=2 AppLogger::count=2 after delete count=1
Спасибозавнимание!