Kasama ng inheritance, mahalaga din ang mga constructor sa C++. A tagabuo ay isang natatanging function ng miyembro na nagbibigay-daan sa iyong simulan ang mga katangian ng object. Isang Tagabuo ng mana ay isang constructor na ginagamit upang simulan ang parehong base class at derived class objects na minana ng derived class. Ang tagabuo ng mana ay responsable para sa pagsisimula ng parehong minanang batayang mga miyembro ng klase at ang mga hinangong miyembro ng klase. Upang makamit ito, hinihiling ng tagabuo ang tagabuo ng batayang klase, tinitiyak na ang lahat ng mga miyembro ng nagmula na klase ay maayos na nasimulan, kabilang ang mga minana mula sa batayang klase.
Sa pamamagitan ng pagtawag sa constructor ng base class at pagpasa dito ng mga kinakailangang parameter, ang tagabuo ng mana sinisimulan ang mga miyembro ng batayang klase. Naisasagawa ito gamit ang 'base class(args)' listahan ng initialization sa constructor. Ang karagdagang mga tagubilin partikular sa nagmula na klase ay ibinibigay sa katawan ng tagabuo.
Ang syntax para sa pagmamana isang klase sa C++ ay:
klase DerivedClass : accessSpecifier BaseClass {
// mga miyembro ng klase
} ;
Ang bagong klase ay nabuo sa kasong ito, 'DerivedClass', magmamana mula sa 'BaseClass'. Ang antas ng pag-access sa mga minanang miyembro ay tinukoy ng ' accessSpecifier”. Gumagamit ang C++ ng tatlong uri ng mga specifier ng pag-access, ibig sabihin 'pampubliko', 'pribado', at 'protektado' . Ang salita “pampubliko” ay nagpapahiwatig na ang nagmula na klase ay may access sa mga pampublikong miyembro ng batayang klase. Ang nagmula na klase ay walang access sa mga miyembro ng batayang klase, ayon sa 'pribado' specifier. Ang nagmula na klase ay may access sa mga protektadong batayang miyembro ng klase na maaaring mamanahin ng kanilang mga anak na klase, ayon sa 'protektado' specifier.
Halimbawa ng Inheritance sa C++
Ang sumusunod na halimbawa ay nagpapakita ng pagpapatupad ng Mana sa C++:
#include
gamit namespace std ;
klase Hayop {
pampubliko :
walang bisa kumain ( ) {
cout << 'Kaya kong kumain!' << endl ;
}
walang bisa matulog ( ) {
cout << 'Kaya kong matulog!' << endl ;
}
} ;
klase Pusa : pampubliko Hayop {
pampubliko :
walang bisa meow ( ) {
cout << 'Kaya ko ng ngiyaw!' << endl ;
}
} ;
int pangunahing ( ) {
Pusang pusa1 ;
pusa1. kumain ( ) ;
pusa1. matulog ( ) ;
pusa1. meow ( ) ;
bumalik 0 ;
}
Ang ibinigay na code ay tumutukoy sa dalawang klase, “Hayop” at “Pusa” , saan “Pusa” ay nagmula sa “Hayop” . Ang parehong mga klase ay may ilang mga function ng miyembro, tulad ng 'kain tulog' , at 'meow' . Ang pangunahing function ay lumilikha ng isang bagay ng klase “Pusa” at tinatawag ang minana mga function mula sa klase “Hayop” gayundin ang tiyak na tungkulin ng klase “Pusa” , which is 'meow' . Ang programa ay naglalabas ng teksto sa console, na nagpapahiwatig na ang pusa ay maaaring kumain, matulog, at ngiyaw.
Output
Kapag nakuha ang isang klase, ang lahat ng mga variable ng miyembro ng batayang klase at mga function ng miyembro ay ililipat sa nagmula na klase. Ang minana Ang accessibility ng mga miyembro sa nagmula na klase ay tinutukoy ng access specifier. Ang nagmula na klase ay maaari ding palitan ng mga bagong feature para sa mga mayroon na. Maaari itong magdagdag ng mga bagong pagpapatupad para sa mga pamamaraan ng base class at magdagdag ng mga bagong function at variable ng miyembro.
Mahalagang tandaan na ang tagabuo ng mana dapat gamitin para tahasang tawagan ang constructor ng base class na may mga kinakailangang parameter kung ang base class ay may default na constructor o kung hindi ito available.
Konklusyon
Ang malakas na katangian ng mana sa C++ ay nagbibigay-daan sa mga klase na muling gamitin ang code sa pamamagitan ng pagmamana ng mga katangian at pagkilos mula sa iba. Isang kapaki-pakinabang na tampok ng C++'s tagabuo ng mana nagbibigay-daan sa mga nagmula na klase na magmana ng mga katangian, pamamaraan, at miyembro ng data ng isang batayang klase. Sa pagdaragdag ng isang listahan ng initialization para sa mga base class constructor, ito ay tinukoy gamit ang parehong syntax bilang isang standard constructor. Maaaring bawasan ng mga programmer ng C++ ang pagdoble ng code at pahusayin ang istraktura ng code sa pamamagitan ng paggamit ng tagabuo ng mana . Para sa paggawa ng kumplikadong mga hierarchy ng klase sa object-oriented programming, isa itong mahalagang tool.