I den här artikeln ska vi diskutera arvskonceptet i C ++ programmering. Vi kommer att förklara konceptet med vänfunktionen i C ++ med arbetsexempel.
Varför arv?
Med arv kan du skapa en ny klass eller härledd klass från en annan klass eller basklass. Den härledda klassen eller barnklassen kommer att ha alla funktioner i moderklassen eller basklassen. Vi kan återanvända koden med hjälp av arv.
Typ av arv
Det finns olika typer av arv:
- Enkel / enkel arv
- Hierarkisk arv
- Arv på flera nivåer
- Flera arv
I den här artikeln ska vi bara överväga enkel / enkel arv.
Exempel 1:
Låt oss nu titta på ett exempelprogram för att förstå begreppet arv i C++. Vi har definierat en basklass och härledt en annan klass från den. Därför kommer den härledda klassen att ha funktionerna (medlemmar och funktioner) från basklassen.
#omfattaanvänder namnrymd std;
klass Base_Class
offentlig:
int i;
ogiltig visning ()
cout << "Display of Base Class " << i << endl;
;
klass Derived_Class: public Base_Class
offentlig:
ogiltig show ()
cout << "Show of Derived Class" << endl;
;
int main ()
Derived_Class dc;
likström.i = 100;
likström.visa();
likström.show();
returnera 0;
Exempel 2:
Detta är ett annat exempel på arv i C++. I det här exemplet ska vi se hur konstruktörerna kallas när ett härledt klassobjekt skapas.
Som du kan se nedan har vi definierat två basklasskonstruktörer och tre härledda klasskonstruktörer. Du kan tydligt märka från utdata nedan att basklasskonstruktören anropas först innan den härledda klasskonstruktören anropas.
#omfatta#omfatta
använder namnrymd std;
klass Base_Class
offentlig:
Base_Class ()
cout << "Base_Class - No Parameters" << endl;
Base_Class (int x)
cout << "Base_Class - Parameters : " << x << endl;
;
klass Derived_Class: public Base_Class
offentlig:
Derived_Class ()
cout << "Derived_Class - No Parameters" << endl;
Derived_Class (int y)
cout << "Derived_Class - Parameters : " << y << endl;
Derived_Class (int x, int y): Base_Class (x)
cout << "Param of Derived_Class : " << y << endl;
;
int main ()
Derived_Class d (7,19);
Exempel 3:
I det här exemplet ska vi se hur härledda klassobjekt kan användas.
Som du kan se finns det två klasser definierade: Rectangle_Class och Cube_Class. Rectangle_Class är basklassen från vilken den härledda klassen, i.e., Cube_Class härleds. Därför ärver vi funktionerna från Rectangle_Class till Cube_Class.
Du kan också märka att vi ärver Cube_Class med den offentliga åtkomstkontrollen. Detta innebär att den härledda klassen kan komma åt alla icke-privata medlemmar i basklassen.
Vi har förklarat ett objekt för den härledda klassen och kallar sedan metoderna från basklassen, dvs.e., setLength () och setBreadth ().
#omfattaanvänder namnrymd std;
klass Rektangel_Klass
privat:
int längd;
int bredd;
offentlig:
Rektangel_klass ();
Rektangel_klass (int l, int b);
Rectangle_Class (Rectangle_Class & r);
int getLength ()
returlängd;
int getBreadth ()
återvänd bredd;
void setLength (int l);
ogiltigt setBreadth (int b);
int område ();
;
klass Cube_Class: offentlig Rectangle_Class
privat:
int höjd;
offentlig:
Cube_Class (int h)
höjd = h;
int getHeight ()
returhöjd;
void setHeight (int h)
höjd = h;
int volym ()
returnera getLength () * getBreadth () * höjd;
;
Rectangle_Class :: Rectangle_Class ()
längd = 1;
bredd = 1;
Rectangle_Class :: Rectangle_Class (int l, int b)
längd = l;
bredd = b;
Rectangle_Class :: Rectangle_Class (Rectangle_Class & r)
längd = r.längd;
bredd = r.bredd;
ogiltig Rectangle_Class :: setLength (int l)
längd = l;
ogiltig Rectangle_Class :: setBreadth (int b)
bredd = b;
int Rectangle_Class :: area ()
returlängd * bredd;
int main ()
Cube_Class c (8);
c.setLength (12);
c.setBreadth (9);
cout<<"Volume is "<
Slutsats:
I den här artikeln har jag förklarat begreppet arv i C++. C ++ stöder olika typer av arv inklusive "multipel arv" (i.e., ärva funktioner från flera basklasser eller föräldraklasser). Men för att göra det enklare har jag bara övervägt enstaka arv här. Jag har visat tre arbetsexempel för att förklara hur vi kan använda arv i C ++ programmering och återanvända koden. Dessutom är detta en mycket användbar egenskap hos C++.