C ++ Mana

C Inheritance



Ang mana ay isang napakahalagang tampok ng object-oriented na programa. Pinapayagan ang programmer na makakuha ng isang klase mula sa isang mayroon nang klase. Ito ay napaka kapaki-pakinabang lalo na sa isang malaking kumplikadong proyekto dahil pinapayagan nitong gamitin muli ng programmer ang code.

Sa artikulong ito, tatalakayin namin ang konsepto ng pamana sa C ++ program. Ipapaliwanag namin ang konsepto ng pagpapaandar ng kaibigan sa C ++ na may mga halimbawa ng pagtatrabaho.







Bakit Mana?

Pinapayagan ng mana na lumikha ng isang bagong klase o nagmula sa klase mula sa ibang klase o base class. Ang nagmula sa klase o klase ng bata ay magkakaroon ng lahat ng mga tampok ng magulang na klase o batayang klase. Maaari naming muling gamitin ang code sa tulong ng mana.



Uri ng Mana

Mayroong iba't ibang mga uri ng mana:



  1. Simple / solong mana
  2. Pamana ng Hierarchical
  3. Mana ng Multilevel
  4. Maramihang Mana

Sa artikulong ito, isasaalang-alang lamang namin ang simple / solong mana.





Halimbawa 1:

Ngayon, tingnan natin ang isang halimbawa ng programa upang maunawaan ang konsepto ng mana sa C ++. Natukoy namin ang isang batayang klase at pagkatapos ay nagmula ng isa pang klase mula rito. Samakatuwid, ang nagmula sa klase ay magkakaroon ng mga tampok (kasapi at pag-andar) mula sa batayang klase.

# isama

gamit ang namespace std;

klase Base_Class
{
pampubliko:
intako;
walang bisaipakita()
{
gastos<< 'Display ng Base Class' <<ako<<endl;
}

};

klase Nakuha_Class:pampublikong Base_Class
{
pampubliko:
walang bisaipakita()
{
gastos<< 'Ipakita ng Hinango na Klase' <<endl;
}
};

intpangunahing()
{
Nagmula_Class dc;
dcako = 100;
dcipakita();
dcipakita();

bumalik ka 0;
}



Halimbawa 2:

Ito ay isa pang halimbawa ng mana sa C ++. Sa halimbawang ito, makikita natin kung paano tinawag ang mga tagapagbuo kapag nilikha ang isang hangang bagay sa klase.

Tulad ng nakikita mo sa ibaba, tinukoy namin ang dalawang tagapagbuo ng base class at tatlong nagmula sa tagabuo ng klase. Maaari mong malinaw na mapansin mula sa output sa ibaba na ang tagapagbuo ng pangunahing klase ay tinawag muna bago tawagan ang nagmula sa klase na tagapagbuo.

# isama
gamit ang namespace std;

klase Base_Class
{
pampubliko:
Base_Class()
{
gastos<< 'Base_Class - Walang Parameter' <<endl;
}
Base_Class(intx)
{
gastos<< 'Base_Class - Mga Parameter:' <<x<<endl;
}
};

klase Nakuha_Class:pampublikong Base_Class
{
pampubliko:
Nagmula_Class()
{
gastos<< 'Derived_Class - Walang Parameter' <<endl;
}
Nagmula_Class(intat)
{
gastos<< 'Derived_Class - Parameter:' <<at<<endl;
}
Nagmula_Class(intx,intat):Base_Class(x)
{
gastos<< 'Param of Derived_Class:' <<at<<endl;
}
};

intpangunahing()
{
Nagmula_Class d(7,19);
}

Halimbawa 3:

Sa halimbawang ito, makikita natin kung paano magagamit ang mga hinahangad na klase ng bagay.

Tulad ng nakikita mo, mayroong dalawang mga klase na tinukoy: Rectangle_Class at Cube_Class. Ang Rectangle_Class ay ang batayang klase kung saan nagmula ang hinango na klase, ibig sabihin, nakuha ang Cube_Class. Samakatuwid, namamana namin ang mga tampok mula sa Rectangle_Class hanggang Cube_Class.

Gayundin, mapapansin mo na nagmamana kami ng Cube_Class na may kontrol sa publiko na pag-access. Nangangahulugan ito na ang na nagmula sa klase ay maaaring ma-access ang lahat ng mga di-pribadong miyembro ng batayang klase.

Idineklara namin ang isang bagay ng nagmula sa klase, at pagkatapos ay tawagan ang mga pamamaraan mula sa base class, ibig sabihin, setLength () at setBreadth ().

# isama

gamit ang namespace std;

klase Rectangle_Class
{
pribado:
inthaba;
intang lawak;
pampubliko:
Parihaba_Class();
Parihaba_Class(intang,intb);
Parihaba_Class(Parihaba_Class&r);
intmakakuha ng Haba()
{
bumalik kahaba;
}
intmakakuha ngBreadth()
{
bumalik kaang lawak;
}
walang bisaitakda ang haba(intang);
walang bisaitakdaBreadth(intb);
intlugar();
};

klase Cube_Class:pampublikong Rectangle_Class
{
pribado:
inttaas;
pampubliko:
Cube_Class(inth)
{
taas=h;
}
intmakakuha ng Taas()
{
bumalik kataas;
}
walang bisaitakda ang Taas(inth)
{
taas=h;
}
intdami()
{
bumalik kamakakuha ng Haba()*makakuha ngBreadth()*taas;
}
};


Parihaba_Class::Parihaba_Class()
{
haba=1;
ang lawak=1;
}
Parihaba_Class::Parihaba_Class(intang,intb)
{
haba=ang;
ang lawak=b;
}
Parihaba_Class::Parihaba_Class(Parihaba_Class&r)
{
haba=r.haba;
ang lawak=r.ang lawak;
}
walang bisaParihaba_Class::itakda ang haba(intang)
{
haba=ang;
}
walang bisaParihaba_Class::itakdaBreadth(intb)
{
ang lawak=b;
}
intParihaba_Class::lugar()
{
bumalik kahaba*ang lawak;
}

intpangunahing()
{
Cube_Class c(8);
c.itakda ang haba(12);
c.itakdaBreadth(9);
gastos<<'Ang dami ay'<<c.dami()<<endl;
}

Konklusyon:

Sa artikulong ito, ipinaliwanag ko ang konsepto ng Pamana sa C ++ . Sinusuportahan ng C ++ ang iba't ibang uri ng pamana kabilang ang maraming pamana (ibig sabihin, ang pagmamana ng mga tampok mula sa maraming base class o magulang na klase). Gayunpaman, upang gawing mas simple, isinaalang-alang ko lamang dito ang solong pamana. Nagpakita ako ng tatlong mga gumaganang halimbawa upang ipaliwanag kung paano namin magagamit ang mana sa C ++ na programa at muling gamitin ang code. Bukod dito, ito ay isang napaka kapaki-pakinabang na tampok ng C ++.