Axborot xavfsizligi fakulteti



Download 18,02 Kb.
bet3/3
Sana02.09.2021
Hajmi18,02 Kb.
#162706
TuriReferat
1   2   3
Bog'liq
Turdiqulov J 713

class base {

public:

virtual void vfunc() {



cout << "This is base's vfunc().\n";

}



};

class derived1 : public base {

public:

void vfunc() {



cout << "This is derived1's vfunc().\n";

}



};

class derived2 : public base {

public:

void vfunc() {



cout << "This is derived2's vfunc().\n";

} };



int main()

{

base *p, b;

derived1 d1;

derived2 d2;



// base sinfga ko’rsatkich

p = &b;



p->vfunc(); // base sinf vfunc() virtual funksiyasi

// derived1 sinfga ko’rsatkich

p = &d1;

p->vfunc(); // derived1 sinf vfunc() virtual funksiyasi

// derived2 sinfga ko’rsatkich

p = &d2;

p->vfunc(); // derived2 sinf vfunc() virtual funksiyasi

return 0;



}

  • Ushbu dasturga ko’ra, base sinfida vfunc( ) nomli virtual funksiya e’lon qilingan.

  • Bu yerda ishlatilgan virtual kalit so’zi qolgan voris sinfdagi funksiyalar ishlashi uchun imkoniyat yaratadi.

  • derived1 va derived2 voris sinflarda vfunc( ) funksiya uchun virtual kalit so’zini ishlatish shart emas.

  • Demak, asos sinf ko’rsatkich obyekti (*p) voris sinf a’zolariga ya’ni funksiyalariga murojaat qila oladi, agar ushbu funksiya asos sinfda virtual deb e’lon qilingan bo’lsa




  • Asos sinfdan voris olinganda ushbu sinfdagi virtual funksiya ham vorislik xususiyatiga ega bo’ladi.

  • Bu shuni bildiradiki, asos sinf virtual funksiyasi voris sinf uchun mavjud bo’lgani bilan birga, ushbu voris sinfdan yana voris olingan holda ham ushbu virtuallik xususiyati saqlanib qoladi. Ya’ni ushbu funksiya ikkinchi voris sinf uchun ham override qilinadi.

  • Bu xususiyat bir nechta vorislikda ham saqlanib qoladi.

  • Quyidagi misolda ko’ramiz:


class base {

public:

virtual void vfunc() {

cout << "This is base's vfunc().\n";

}



};

class derived1 : public base {

public:

void vfunc() {

cout << "This is derived1's vfunc().\n";

}



};

/* derived2 sinf uchun vfunc() virtual funksiyasi derived1 sinfdan voris sifatida o’tgan. */

class derived2 : public derived1 {

public:

void vfunc() { // vfunc() virtual funksiya

cout << "This is derived2's vfunc().\n";

} };



int main()

{

base *p, b;

derived1 d1;

derived2 d2;



// base sinfga ko’rsatkich

p = &b;



p->vfunc(); // base sinf vfunc() virtual funksiyasi

// derived1 sinfga ko’rsatkich

p = &d1;

p->vfunc(); // derived1 sinf vfunc() virtual funksiyasi

// derived2 sinfga ko’rsatkich

p = &d2;

p->vfunc(); // derived2 sinf vfunc() virtual funksiyasi

return 0;



}

  • Asos sinfda virtual funksiya yaratilgan va bu voris sinf uchun override qilinishi mumkin.

  • Agar voris sinfda mazkur virtual funksiya override qilinmagan bo’lsa nima bo’ladi?

  • Bunda voris sinf obyekti virtual funksiyaga murojaat qiladi, ya’ni asos sinf virtual funksiyasiga.

  • Quyida misol keltirilgan:


class base {

public:

virtual void vfunc() {



cout << "This is base's vfunc().\n";

} };

class derived1 : public base {

public:

void vfunc() {



cout << "This is derived1's vfunc().\n";

}

};

class derived2 : public base {

public:

// vfunc() override qilinmagan



};

int main()

{

base *p, b;

derived1 d1;

derived2 d2;



// base sinfga ko’rsatkich

p = &b;



p->vfunc(); // base sinf vfunc() virtual funksiyasi

// derived1 sinfga ko’rsatkich

p = &d1;

p->vfunc(); // derived1 sinf vfunc() virtual funksiyasi

// derived2 sinfga ko’rsatkich

p = &d2;

p->vfunc(); // derived2 sinf vfunc() virtual funksiyasi

return 0;



}
Polimorfizm bu – bitta nom bilan bir nechta funksiyalarni qayta yuklanishidir.

C++ da polimorfizm 2 ta usulda namoyon bo’ladi:



1-usul: funksiyalar va operatorlarning qo’shimcha yuklanishida.

2-usul: vorislik va virtual funksiyalardan foydalanishda vujudga keladi.
Download 18,02 Kb.

Do'stlaringiz bilan baham:
1   2   3




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish