C ++ pärand

C Inheritance



Pärimine on objektorienteeritud programmeerimise väga oluline omadus. See võimaldab programmeerijal tuletada klassi olemasolevast klassist. See on väga kasulik, eriti suures keerulises projektis, kuna see võimaldab programmeerijal koodi uuesti kasutada.

Selles artiklis käsitleme pärandi kontseptsiooni C ++ programmeerimisel. Selgitame C ++ sõbrafunktsiooni kontseptsiooni töönäidetega.







Miks pärand?

Pärimine võimaldab luua uue klassi või teisest klassist või põhiklassist tuletatud klassi. Tuletatud klassil või alamklassil on kõik vanemklassi või põhiklassi omadused. Saame koodi pärimise abil uuesti kasutada.



Pärandi tüüp

On mitmeid päranditüüpe:



  1. Lihtne/ühekordne pärand
  2. Hierarhiline pärand
  3. Mitmetasandiline pärand
  4. Mitu pärandit

Selles artiklis kaalume ainult lihtsat/ühekordset pärandit.





Näide 1:

Nüüd vaatame näidisprogrammi, et mõista pärandi mõistet C ++ -is. Oleme määratlenud põhiklassi ja seejärel tuletanud sellest teise klassi. Seetõttu on tuletatud klassil põhiklassi tunnused (liikmed ja funktsioonid).

#kaasake

kasutades nimeruumi std;

klass Base_Class
{
avalik:
inti;
tühinekuvada()
{
maksma<< 'Põhiklassi kuvamine' <<i<<endl;
}

};

klass Derived_Class:avalik Base_Class
{
avalik:
tühinenäitama()
{
maksma<< 'Tuletatud klassi näitus' <<endl;
}
};

intpeamine()
{
Derived_Class dc;
dc.i = 100;
dc.kuvada();
dc.näitama();

tagasi 0;
}



Näide 2:

See on veel üks näide C ++ pärimisest. Selles näites näeme, kuidas konstruktoreid kutsutakse tuletatud klassi objekti loomisel.

Nagu näete allpool, oleme määratlenud kaks põhiklassi konstruktorit ja kolm tuletatud klassi konstruktorit. Alltoodud väljundist näete selgelt, et enne tuletatud klassi konstruktorit kutsutakse kõigepealt välja baasklassi konstruktor.

#kaasake
kasutades nimeruumi std;

klass Base_Class
{
avalik:
Base_Class()
{
maksma<< „Base_Class - parameetreid pole” <<endl;
}
Base_Class(intx)
{
maksma<< 'Base_Class - parameetrid:' <<x<<endl;
}
};

klass Derived_Class:avalik Base_Class
{
avalik:
Tuletatud_klass()
{
maksma<< „Derived_Class - parameetreid pole” <<endl;
}
Tuletatud_klass(intja)
{
maksma<< 'Derived_Class - parameetrid:' <<ja<<endl;
}
Tuletatud_klass(intx,intja):Base_Class(x)
{
maksma<< 'Tuletatud_klassi parameeter:' <<ja<<endl;
}
};

intpeamine()
{
Tuletatud_klass d(7,19);
}

Näide 3:

Selles näites näeme, kuidas saab kasutada tuletatud klassi objekte.

Nagu näete, on määratletud kaks klassi: Rectangle_Class ja Cube_Class. Rectangle_Class on põhiklass, millest tuletatud klass, st Cube_Class, tuletatakse. Seetõttu pärime funktsioonid Rectangle_Classilt Cube_Class.

Samuti võite märgata, et pärime Cube_Class'i koos avaliku juurdepääsu kontrolliga. See tähendab, et tuletatud klass pääseb juurde kõigile põhiklassi mitte-eraliikmetele.

Oleme deklareerinud tuletatud klassi objekti ja kutsume seejärel põhiklassi meetodid, st setLength () ja setBreadth ().

#kaasake

kasutades nimeruumi std;

klass Ristkülik_klass
{
privaatne:
intpikkus;
intlaius;
avalik:
Ristkülikuklass();
Ristkülikuklass(intthe,intb);
Ristkülikuklass(Ristkülikuklass&r);
intgetLength()
{
tagasipikkus;
}
intgetBreadth()
{
tagasilaius;
}
tühinesetLength(intthe);
tühinesetBreadth(intb);
intpiirkonnas();
};

klass Kuup_klass:public Rectangle_Class
{
privaatne:
intkõrgus;
avalik:
Cube_Class(inth)
{
kõrgus=h;
}
intgetHeight()
{
tagasikõrgus;
}
tühinesetHeight(inth)
{
kõrgus=h;
}
intmaht()
{
tagasigetLength()*getBreadth()*kõrgus;
}
};


Ristkülikuklass::Ristkülikuklass()
{
pikkus=1;
laius=1;
}
Ristkülikuklass::Ristkülikuklass(intthe,intb)
{
pikkus=the;
laius=b;
}
Ristkülikuklass::Ristkülikuklass(Ristkülikuklass&r)
{
pikkus=r.pikkus;
laius=r.laius;
}
tühineRistkülikuklass::setLength(intthe)
{
pikkus=the;
}
tühineRistkülikuklass::setBreadth(intb)
{
laius=b;
}
intRistkülikuklass::piirkonnas()
{
tagasipikkus*laius;
}

intpeamine()
{
Cube_Class c(8);
c.setLength(12);
c.setBreadth(9);
maksma<<'Helitugevus on'<<c.maht()<<endl;
}

Järeldus:

Selles artiklis olen selgitanud pärandi mõistet C ++ . C ++ toetab erinevat tüüpi pärimist, sealhulgas mitut pärimist (st tunnuste pärimist mitmest põhiklassist või vanemaklassist). Kuid lihtsamaks muutmiseks olen siin kaalunud ainult üksikut pärandit. Olen näidanud kolme töötavat näidet, et selgitada, kuidas saame C ++ programmeerimisel pärandit kasutada ja koodi uuesti kasutada. Pealegi on see C ++ väga kasulik omadus.