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


const модификаторын жою үшін қажет. Көбінесе ол  функциядағы  const



Pdf көрінісі
бет226/466
Дата20.07.2022
өлшемі3,66 Mb.
#37798
түріПрограмма
1   ...   222   223   224   225   226   227   228   229   ...   466
Байланысты:
pavlovskaia-jogargy-dengeili

const
модификаторын жою үшін қажет. Көбінесе ол 
функциядағы 
const
модификаторы жоқ формалды параметрдің орнына 
тұрақтылық нұсқауышты беру кезінде қолданылады. Операция форматы:
const_cast <тип> (өрнек)
Мұндағы тип өрнек типімен бірдей болуы керек, бірақ ол 
const 
моди-
фикаторы бола алмайды. Əдетте бұл нұсқауыш болып табылады. Операция 
көрсетілген типтегі нəтиже алуды қалыптастырады.
Бұл операцияны енгізу қажеттілігі – функцияны жүзеге асыратын про-
граммалаушы ондағы өзгермейтін формалды параметрлерді 
const 
түрінде 
сипаттауға міндетті болмағанымен, бірақ көбінесе осылай істеу ұсынылады. 
C++ тілінің ережелері қарапайым нұсқауыштың орнына тұрақтылық 
нұсқауышты беруге тыйым салады. 
const_cast
операциясы бұл шектеуді 
айналып өту үшін енгізілген. Əрине, функция берілетін нұсқауыш сілтеме жа-
сайтын мəнді өзгертуге талпынбауы тиіс, əйтпесе программаның орындалу 
нəтижесі анықталмаған болып саналады. 
Мысал:
void print(int *p){ // Функция *p мəнін өзгертпейді
cout << *p;
}
const int *p;
...
/* print(p); Қате, өйткені p тұрақтыға нұсқауыш ретінде
жарияланған */
Программалаушы функцияның тұлғасында нұсқауыш сілтеме жасайтын 
мəн өзгермейтініне сенімді болған жағдайда ғана, 
const_cast
операциясы 
қолданылады. Əрине, формалды параметрдің сипаттамасына 
const
модифи-
каторын қосу мүмкіндігі болса, бұл əрекет функцияны шақыру кезінде типті 
түрлендіруді қолдануға қарағанда дұрысырақ болып саналады. 
dynamic_cast операциясы
Бұл операция иерархияның туыстас кластарының нұсқауыштарын, 
негізінен, базалық класс нұсқауышын туынды класс нұсқауышына түрлендіру 
үшін қолданылады, мұнда программаның орындалу барысында түрлендірудің 
жасалу мүмкіндігі тексеріледі.


251
Операция форматы:


Достарыңызбен бөлісу:
1   ...   222   223   224   225   226   227   228   229   ...   466




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

    Басты бет