Программалау оқулық Алматы, 012 Қазақстан Республикасы Білім жəне ғылым министрлігінің «Оқулық»


void fun(int (monstr:: *pget)()){



Pdf көрінісі
бет298/642
Дата30.03.2022
өлшемі3,66 Mb.
#29231
түріПрограмма
1   ...   294   295   296   297   298   299   300   301   ...   642
void fun(int (monstr:: *pget)()){

   (*this.*pget)();    // Функцияны .* операциясы 

                      // арқылы шақыру

   (this->*pget)();    // Функцияны ->* операциясы 

                      // арқылы шақыру

}

Нұсқауышты нақты көрсетілген əдіске адресті алу операциясының 

көмегімен баптауға болады:

// Нұсқауышқа мəн меншіктеу: 

pget = & monstr::get_health; 

monstr Vasia, *p; 

p = new monstr;

// Функцияны .* операциясы арқылы шақыру:

int Vasin_health = (Vasia.*pget)(); 

// Функцияны ->* операциясы арқылы шақыру:

int p_health = (p->*pget)();

Төменде нұсқауыштарды класс əдістеріне қолдану ережелері көрсетілген:

□  Əдіс нұсқауышына тек сəйкес тақырыбы бар əдістердің адрестерін 

меншіктеуге болады.

□  Кластың статикалық əдісіне нұсқауышты анықтауға болмайды.

□  Əдіске нұсқауышты класс элементі болып табылмайтын қарапайым 

функция нұсқауышына түрлендіруге болмайды. 

Қарапайым функцияларға нұсқауыштар сияқты əдістерге нұсқауыштар 

 

атауы белгісіз əдістерді шақыру керек болған кезде қолданылады. Бірақ оның 



айнымалыға немесе қарапайым функцияға нұсқауыштан айырмашылығы – 

əдістерге нұсқауыштар жадының белгілі бір адресіне сілтеме жасамайды. Ол  

жиымдағы индекске көбірек ұқсайды, өйткені ығыстыру шамасын тағайындайды. 

Компьютер жадындағы нақты көрсетілген адрес əдіске нұсқауышты нақты 

көрсетілген объектіге нұсқауышпен үйлестіру арқылы алынады.

ЕСКЕРТУ 

Нұсқауыштар арқылы шақырылатын əдістер виртуалды болуы мүмкін. Мұндайда 

нұсқауыш қолданылған объект типіне сəйкес келетін əдіс шақырылады.

Класс өрісіне нұсқауыштың форматы:



Достарыңызбен бөлісу:
1   ...   294   295   296   297   298   299   300   301   ...   642




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет