public:
S() {ob_soni++;}
~S() {ob_soni--;}
static int ob_soni ;
private:
int x;
};
int S::ob_soni=0;
int main ()
{
S* p_ob=new S[5];
cout<<”Sinfning ”<
delete [] p_ob;
return 0;
}
Программа ишлаш натижасида экранга
Sinfning 5 ob’ekti mavjud.
Синфнинг статик функцияларни ишлатишнинг ўзига хослиги шундаки, улар ҳам ягона нусхада аниқланади ва бирорта синф объектининг “шахсий” функцияси бўлмайди. Шу сабабли, бу функцияларга this кўрсаткичи узатилмайди. Статик функцияларнинг бундай хусусиятидан Windows учун программалашда кенг фойдаланилади.
Юқорида айтилган фикрлардан бир нечта муҳим хулосалар келиб чиқади:
статик функция –аъзоларни синфнинг бирорта ҳам вакили (объекти) мавжуд бўлмаса ҳам чақириш мумкин;
синфнинг статик функцияси фақат синфнинг статик берилганларини қайта ишлаши мумкин ва фақат синфнинг статик функция–аъзоларини чақриши мумкин;
статик функция-аъзо virtual модификатори билан эълон қилиниши мумкин эмас.
Қуйида келтирилган программа функция–аъзони ишлатишга мисол бўлади:
#include
class S
{
public:
S() {sanagich++};
~S() {sanagich--};
//..
static int Sinf_Sanagichi(){return sanagich;}
private:
int x;
static int sanagich;
};
int S::sanagich=0;
int main()
{
S * pOb= new S[10];
cout<<”S sinfning “<
<<” ob’ekti mavjud”<
delete [] pOb;
return 0;
}
Синфнинг контанста объектлари ва константа функция-аъзолари
Синфнинг функция-аъзолари параметрлар рўйхатидан кейин келувчи const модификатори билан эълон қилиниши мумкин. Бундай функция синф берилганлар-аъзолари қийматларини ўзгартира олмайди ва синфнинг константа бўлмаган функция–аъзоларини чақириши мумкин эмас. Константа функция-аъзоси бўлган синфга мисол келтирамиз.
Do'stlaringiz bilan baham: |