Объектга йўналтирилган программалаш


Download 0.58 Mb.
bet14/71
Sana08.05.2023
Hajmi0.58 Mb.
#1444224
TuriПрограмма
1   ...   10   11   12   13   14   15   16   17   ...   71
Bog'liq
С ОЙП

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 кўрсаткичи узатилмайди;

  • синфнинг функция-аъзосига кўрсаткични қандайдир синфнинг аъзоси бўлмаган оддий функция кўрсаткичига айлантириш мумкин эмас.




Download 0.58 Mb.

Do'stlaringiz bilan baham:
1   ...   10   11   12   13   14   15   16   17   ...   71




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling