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



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

#include  
#include  
class B{
public: virtual void f1(){ ... }; // B C 
}; // \ / 
class C{ // D
public: virtual void f2(){ ... };
};
class D: public B, public C{};
void demo(B* b){
C* c = dynamic_cast(b); 
if(c)c->f2();
}
int main(){
D* d = new D; demo(d); 
return 0;
}
D
класы 
B
жəне 
C
кластарының ұрпағы болып табылады, сондықтан оның 
құрамында осы екі кластың да əдістері сақталады. Егер 
demo
функциясына
 В
класына емес, 
D
класына деген нұсқауыш берілетін болса, онда оны екінші 
С
базалық класына түрлендіруге болады.
static_cast операциясы
static_cast
операциясы компиляция кезеңінде типтерді түрлендіруді 
келесі типтер арасында жүзеге асыру үшін қолданылады:
□ бүтін 
типтер;
□ бүтін жəне нақты типтер;
□ бүтін жəне тізбелік типтер;
□ түрлендіру бірмəнді түрде болып, ол виртуалды базалық класты 
төмендететін түрлендірумен байланысты болмаған жағдайда, бір 
иерархия объектілеріне нұсқауыштар мен сілтемелер арасында 
атқарылады.
Операцияның форматы:
static_cast <типі> (мəні)
Операция нəтижесі көрсетілген типте болады, ол сілтеме, нұсқауыш, 
арифметикалық немесе тізбелік тип болуы мүмкін.
Операцияны орындау кезінде мəліметтердің ішкі бейнесі өзгертілуі мүмкін, 
бірақ сандық мəні өзгермейді. Мысалы:


256
fl oat f = 100;
int i = static_cast (f);
// Бүтін жəне нақты типтердің ішкі бейнесі əртүрлі 
Мұндай түрлендірулер мəліметтерді жоғалту мүмкіндігі туралы 
компилятордың хабарламаларын шығармай басып тастау үшін қажет, бірақ 
мұндайда дəл осы əрекет орындалатынына сенімді болу керек. Түрлендіру 
нəтижесі программалаушының жауапкершілігінде қалады. 


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




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

    Басты бет