C ++ mantojums

C Inheritance



Mantojums ir ļoti svarīga objektorientētas programmēšanas iezīme. Tas ļauj programmētājam iegūt klasi no esošas klases. Tas ir ļoti noderīgi, jo īpaši lielā sarežģītā projektā, jo tas ļauj programmētājam atkārtoti izmantot kodu.

Šajā rakstā mēs apspriedīsim mantojuma koncepciju C ++ programmēšanā. Mēs izskaidrosim draugu funkcijas jēdzienu C ++ ar darba piemēriem.







Kāpēc mantojums?

Mantojums ļauj izveidot jaunu klasi vai atvasinātu klasi no citas klases vai pamatklases. Atvasinātajai klasei vai bērnu klasei būs visas vecāku klases vai pamatklases iezīmes. Mēs varam atkārtoti izmantot kodu, izmantojot mantojumu.



Mantojuma veids

Pastāv dažādi mantojuma veidi:



  1. Vienkāršs/atsevišķs mantojums
  2. Hierarhiskā mantošana
  3. Daudzlīmeņu mantojums
  4. Vairāki mantojumi

Šajā rakstā mēs apsvērsim tikai vienkāršu/atsevišķu mantojumu.





1. piemērs:

Tagad apskatīsim programmas piemēru, lai izprastu mantojuma jēdzienu C ++. Mēs esam definējuši bāzes klasi un pēc tam no tās atvasinājuši citu klasi. Tāpēc atvasinātajai klasei būs pazīmes (dalībnieki un funkcijas) no pamatklases.

#iekļaut

izmantojot nosaukumvietas std;

klase Base_Class
{
publiski:
inti;
spēkā neesošsdisplejs()
{
izmaksas<< 'Bāzes klases displejs' <<i<<endl;
}

};

klase Derived_Class:publiska Base_Class
{
publiski:
spēkā neesošsšovs()
{
izmaksas<< 'Atvasināto klašu šovs' <<endl;
}
};

intgalvenais()
{
Derived_Class dc;
dc.i = 100;
dc.displejs();
dc.šovs();

atgriezties 0;
}



2. piemērs:

Šis ir vēl viens mantojuma piemērs C ++. Šajā piemērā mēs redzēsim, kā tiek saukti konstruktori, kad tiek izveidots atvasināts klases objekts.

Kā redzat zemāk, mēs esam definējuši divus bāzes klases konstruktorus un trīs atvasinātus klases konstruktorus. No zemāk redzamās izejas varat skaidri pamanīt, ka pirms atvasinātās klases konstruktora izsaukšanas vispirms tiek izsaukts bāzes klases konstruktors.

#iekļaut
izmantojot nosaukumvietas std;

klase Base_Class
{
publiski:
Base_Class()
{
izmaksas<< 'Base_Class - bez parametriem' <<endl;
}
Base_Class(intx)
{
izmaksas<< 'Base_Class - Parameters:' <<x<<endl;
}
};

klase Derived_Class:publiska Base_Class
{
publiski:
Derived_Class()
{
izmaksas<< 'Derived_Class - bez parametriem' <<endl;
}
Derived_Class(intun)
{
izmaksas<< 'Derived_Class - Parameters:' <<un<<endl;
}
Derived_Class(intx,intun):Base_Class(x)
{
izmaksas<< 'Param of Derived_Class:' <<un<<endl;
}
};

intgalvenais()
{
Derived_Class d(7,19);
}

3. piemērs:

Šajā piemērā mēs redzēsim, kā var izmantot atvasinātos klases objektus.

Kā redzat, ir definētas divas klases: Rectangle_Class un Cube_Class. Taisnstūra_klase ir pamatklase, no kuras ir atvasināta klase, t.i., Cube_Class. Tāpēc mēs pārmantojam funkcijas no Rectangle_Class uz Cube_Class.

Varat arī pamanīt, ka mēs pārmantojam Cube_Class ar publiskās piekļuves kontroli. Tas nozīmē, ka atvasinātā klase var piekļūt visiem bāzes klases dalībniekiem, kas nav privāti.

Mēs esam deklarējuši atvasinātās klases objektu un pēc tam izsaucam metodes no pamatklases, t.i., setLength () un setBreadth ().

#iekļaut

izmantojot nosaukumvietas std;

klase Taisnstūris_Class
{
Privāts:
intgarums;
intplatums;
publiski:
Taisnstūra_klase();
Taisnstūra_klase(intun,intb);
Taisnstūra_klase(Taisnstūra_klase&r);
intgetLength()
{
atgrieztiesgarums;
}
intgetBreadth()
{
atgrieztiesplatums;
}
spēkā neesošssetLength(intun);
spēkā neesošssetBreadth(intb);
intapgabalā();
};

klase Cube_Class:public Rectangle_Class
{
Privāts:
intaugstums;
publiski:
Cube_Class(inth)
{
augstums=h;
}
intgetHeight()
{
atgrieztiesaugstums;
}
spēkā neesošssetHeight(inth)
{
augstums=h;
}
intapjoms()
{
atgrieztiesgetLength()*getBreadth()*augstums;
}
};


Taisnstūra_klase::Taisnstūra_klase()
{
garums=1;
platums=1;
}
Taisnstūra_klase::Taisnstūra_klase(intun,intb)
{
garums=un;
platums=b;
}
Taisnstūra_klase::Taisnstūra_klase(Taisnstūra_klase&r)
{
garums=r.garums;
platums=r.platums;
}
spēkā neesošsTaisnstūra_klase::setLength(intun)
{
garums=un;
}
spēkā neesošsTaisnstūra_klase::setBreadth(intb)
{
platums=b;
}
intTaisnstūra_klase::apgabalā()
{
atgrieztiesgarums*platums;
}

intgalvenais()
{
C kuba_klase c(8);
c.setLength(12);
c.setBreadth(9);
izmaksas<<'Sējums ir'<<c.apjoms()<<endl;
}

Secinājums:

Šajā rakstā es izskaidroju mantojuma jēdzienu C ++ . C ++ atbalsta dažādus mantošanas veidus, ieskaitot vairāku mantojumu (t.i., funkciju pārmantošanu no vairākām pamatklasēm vai vecāku klasēm). Tomēr, lai būtu vienkāršāk, es šeit esmu apsvēris tikai vienu mantojumu. Esmu parādījis trīs darba piemērus, lai izskaidrotu, kā mēs varam izmantot mantojumu C ++ programmēšanā un atkārtoti izmantot kodu. Turklāt šī ir ļoti noderīga C ++ iezīme.