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
Операция форматы:
Достарыңызбен бөлісу: |