Лекция: Статические переменные-члены и статические функции-члены.
До этого момента предполагалось, что все данные находящиеся в классе должны принадлежать объектам класса, причём какое-либо данное должно было принадлежать конкретному объекту класса. Но иногда возникает необходимость в получении информации о накоплении данных программой. (например о количестве объектов класса). Эту задачу решают статистические переменные-члены. Эти переменные используются всеми объектами класса, то есть можно сказать, что они принадлежат классу, а не объекту класса. Их можно рассматривать как нечто среднее между глобальными переменными и переменными-членами.
#include<iostream.h>
Class Cat
{
public:
Cat(int age):itsAge(age){HayMenyCats++;}
virtual ~Cat(){HayMenyCats--;}
virtual int GetAge() {return itsAge;}
virtual void SetAge(int age){itsAge=age;}
Static int HayMenyCats;
private:
Int itsAge;
};
int Cat::HayMenyCats =0;
Int main(void)
{
const int MaxCat=5;
Int i;
Cat *CatHouse[MaxCat];
for(i=0;i<MaxCat;i++)
CatHouse[i]=new Cat(Maxcat-i);
for(i=0;i<MaxCat;i++)
{
cout<<«сейчас у нас »;
cout<<Cat::HayMenyCats;
cout<<" кота.\n";
cout<<«удалим кота, возраст которого »;
cout<<CatHouse[i]->GetAge()<<" года \n";
delete CatHouse[i];
CatHouse[i]=0;
}
Return 0;
}
у нас живёт 4 кота .
Удалим кота, возраст которого 4 года
у нас живёт 3 кота .