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



Pdf көрінісі
бет231/465
Дата09.01.2023
өлшемі3,66 Mb.
#60709
түріПрограмма
1   ...   227   228   229   230   231   232   233   234   ...   465
Байланысты:
аибм сплюс

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
операцияларының арасындағы 
айырмашылық 


Достарыңызбен бөлісу:
1   ...   227   228   229   230   231   232   233   234   ...   465




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

    Басты бет