Polimorfizm va uning turlari. Virtual funksiya. Abstrakt sinf va funksiyalar. 12 Mavzu



Yüklə 15,91 Kb.
səhifə3/4
tarix07.01.2024
ölçüsü15,91 Kb.
#210216
1   2   3   4
1) 13-mavzu(Polimorfizm)

Abstrakt sinf tushunchasi

  • C++ tilida kamida bitta virtual funksiyaga ega bo’lgan sinf abstrakt sinf deyiladi.
  • Abstrakt sinfning asosiy xususiyatidan biri shuki, ushbu turdagi sinfdan obyekt olib bo’lmaydi.
  • Demak sinfni to’la abstractligini ta’minlash uchun quyidagi qonuniyatdan foydalanamiz:
  • class base{
  • public:
  • virtual vfunc(args....) = 0;
  • ..... }

Misol

  • class Base{
  • public:
  • virtual void display( int i) =0; };
  • class Derv: public Base{
  • public:
  • void display(int j) { cout<<"Derv::"<
  • int main(){
  • Base b; // xato, chunki Base sinf abstrakt
  • Base *ptr = new Derv; ptr->display(10); }

Virtual base classlar

  • Agar nasl olinayotgan class bir necha base classdan nasl olganda hatolik mavjud bo’ladi. Bunday holatlarda nima qilish kerak? Bunday holatlarda virtual base classlar ishlatiladi.

protected sin a’zolariga murojaat

  • class base { public: int i; };
  • class derived1 : public base { public: int j; };
  • class derived2 : public base { public: int k; };
  • class derived3 : public derived1, public derived2 {
  • public: int sum;};
  • int main(){
  • derived3 ob; ob.i = 10;
  • ob.j = 20; ob.k = 30;
  • ob.sum = ob.i + ob.j + ob.k;}
  • Bu kodda hatolik mavjud:
  • Hatolik qaysi i???

Oldingi misolni hatoligini to’g’irlash

  • class base { public: int i; };
  • class derived1 : public base { public: int j; };
  • class derived2 : public base { public: int k; };
  • class derived3 : public derived1, public derived2 {
  • public: int sum;};
  • int main(){
  • derived3 ob;
  • ob.derived1::i = 10;
  • ob.j = 20; ob.k = 30; }
  • Bu kodda hatolik mavjud:

Yüklə 15,91 Kb.

Dostları ilə paylaş:
1   2   3   4




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin