mutable int count;
mutable const int * intPtr;//Ўринли, гарчи
// кўрсаткич константа бутун сонга кўрсатса
// ҳам ўзи константа эмас
public:
int Funktsiya(int i=0) const
{
count=i++;
intPtr =&i;
cout<<*intPtr;
return count;
}
};
int main()
{
Sinf S;
S.Funktsiya();
return 0;
}
Программа ишлаши натижасида экранга
1
чоп этилади.
Синф функциялар-аъзоларига кўрсаткичларни ишлатиш
Синфнинг функция-аъзосига кўрсаткични аниқлаш мумкин. Унинг синтаксиси қуйидагича:
<функция қайтарувчи қиймат тури> (<синф номи> :: *<кўрсаткич номи>)(<параметрлар>);
Мисол.
void (S::*Funkt_kursatgich)(int x,int y);
Қуйида келтирилган программада функция-аъзосига кўрсаткични ишлатилган.
class S
{
int i;
public:
S(int I):i(I){}
void Fun_A_zo();
{cout<<”Функция аъзо ишлади!”;}
void Fun_Chaqirish
(void (S::*Fun_Kursatgich)())
{
(this->*Fun_Kursatgich)();
}
}
int main()
{
void (S::*Fun_Kursatgich)()=&S::Fun_A_zo;
S obekt(100);
obekt.Fun_Chaqirish(Fun_Kursatgich);
return 0;
}
Программанинг 1-сатрида Fun_Kursatgich кўрсаткичига Fun_A_zo функция–аъзо адреси берилган, 3–сатрда Fun_Chaqirish функция–аъзо Fun_Kursatgich кўрсаткич бўйича Fun_A_zo функциясини чақиради ва экранга
Функция-аъзо ишлади!
хабари чиқади.
Синфнинг функция-аъзосига кўрсаткични ишлатишда маълум бир чекловлар мавжуд:
синфнинг функция-аъзосига кўрсаткични синфнинг статик функция–аъзоларига кўрсата олмайди, чунки уларга this кўрсаткичи узатилмайди;
синфнинг функция-аъзосига кўрсаткични қандайдир синфнинг аъзоси бўлмаган оддий функция кўрсаткичига айлантириш мумкин эмас.
Do'stlaringiz bilan baham: |