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 операциясы Бұл операция иерархияның туыстас кластарының нұсқауыштарын,
негізінен, базалық класс нұсқауышын туынды класс нұсқауышына түрлендіру
үшін қолданылады, мұнда программаның орындалу барысында түрлендірудің
жасалу мүмкіндігі тексеріледі.