static_cast операциясы туынды кластан базалық класқа жəне керісінше
түрлендіруді шектеусіз түрде жүзеге асыруға мүмкіндік береді.
class В{}; class С: public В{}; С с; В *bp = static_cast(c); // Туынды -> базалық В b; С &ср = static_cast(b); // Базалық -> туынды Түрлендіру компиляция барысында жүзеге асырылады, бұл кезде
объектілер полиморфты болмауы да мүмкін. Программалаушы түрлендірілген
шамалармен одан əрі жұмыс істеу мүмкіндігін өзі қадағалауы тиіс.
Жалпы жағдайда иерархияның туыстас кластарының нұсқауыштарын
түрлендіру үшін
dynamic_cast операциясын қолданған жөн. Мұндайда,
егер түрлендіруді компиляция кезеңінде жүргізу мүмкін болса,
static_cast үшін генерацияланған кодпен бірдей код туындайды. Соны-
мен қатар,
dynamic_cast қиылысқан түрлендіру мен виртуалды базалық
кластың төмендететін түрлендірілуін жүзеге асыра алады жəне түрлендірудің
орындалу мүмкіндігін оның атқарылу кезінде тексереді.
reinterpret_cast операциясы reinterpret_cast операциясы өзара байланыспаған типтерді, мысалы,
нұсқауыштарды бүтін типке жəне керісінше,
void* типті нұсқауыштарды
нақты бір көрсетілген типке түрлендіру үшін қолданылады. Мұндайда
мəліметтердің ішкі бейнесі өзгеріссіз қалады да, тек компилятордың мəліметке
көзқарасы өзгереді.
Операция форматы:
reinterpret_cast <тип> (өрнек) Операцияның нəтижесі көрсетілген типке ие болады, ол сілтеме, нұсқауыш,
бүтін немесе нақты тип болуы мүмкін.
Мысал:
char *р = reinterpret_cast (malloc(100)); long l = reinterpret_cast (p);
257
static_cast жəне
reinterpret_cast операцияларының арасындағы
айырмашылық