C ++ Pag-override ng Function

C Function Overriding



Sa artikulong ito, sasakupin namin ang pag-override ng pag-andar sa wika ng pagprograma ng C ++. Sinusuportahan ng C ++ ang runtime polymorphism.

Sa pag-override ng pag-andar, binabago ng klase ng bata ang pagpapaandar na natukoy na sa magulang na klase.







Pinapayagan nito ang programmer na magbigay ng nakuhang pag-andar na tukoy sa klase (kahit na ito ay tinukoy sa batayang klase).



Ngayon, makakakita kami ng ilang mga halimbawa at mauunawaan ang function na overriding na konsepto sa C ++.



Halimbawa-1

Natukoy ko ang dalawang klase sa ibaba halimbawa ng code - isang batayang klase at isang nagmula sa klase. Ang batayang klase ay may pagpapaandar ng miyembro, ibig sabihin, disp (). Ang Derived_Class ay minana mula sa Base_Class. Ang pagpapaandar ng disp () ay naroroon sa Base_Class at pagkatapos ay muling binago ang kahulugan sa Derived_Class.





Sa pangunahing () pagpapaandar, isang bagay ng Derived_Class, ibig sabihin, d, ay nilikha. Pagkatapos, tinawag namin ang pagpapaandar ng disp () sa hinahangad na bagay ng klase, kaya ang function na nagmula sa klase ay tatawagin. Ang batayan ng bersyon ng klase ay hindi pinapansin dito. Maaari mong makita sa ibaba ang output bilang - disp () na pagpapaandar sa hinango na klase.

# isama

gamit ang namespace std;

// batayang klase
klase Base_Class
{
pampubliko:
walang bisamapakinabangan()
{
gastos<< function na 'disp () sa batayang klase.' <<endl;
}

};

// nagmula sa klase
klase Nakuha_Class:pampublikong Base_Class
{
pampubliko:
walang bisamapakinabangan()
{
gastos<< function na 'disp () sa nagmula sa klase' <<endl;
}
};

intpangunahing()
{
Nagmula_Class d;
d.mapakinabangan(); // disp () pagpapaandar sa hinahangad na object ng klase
bumalik ka 0;
}



Halimbawa-2

Sa halimbawang ito, makikita natin kung paano kusa na tawagan ang bersyon ng batayang klase ng pagpapaandar sa pamamagitan ng hinango na bagay ng klase. Sa nagmula sa kahulugan ng pagpapaandar ng klase, ginagamit namin ang operator ng resolusyon ng saklaw [::] upang tawagan ang bersyon ng batayang klase ng pagpapaandar.

# isama

gamit ang namespace std;

klase Base_Class
{
pampubliko:
walang bisamapakinabangan()
{
gastos<< function na 'disp () sa batayang klase.' <<endl;
}

};

klase Nakuha_Class:pampublikong Base_Class
{
pampubliko:
walang bisamapakinabangan()
{
Base_Class::mapakinabangan(); // Call the base class bersyon ng disp ()
}
};

intpangunahing()
{
Nagmula_Class d;
d.mapakinabangan();
bumalik ka 0;
}

Halimbawa-3

Ito ay isa pang halimbawa ng pag-override ng pag-andar. Sa halimbawang ito, lumikha kami ng isang magulang na klase - Hayop at dalawang nagmula sa klase - Pato at Aso. Ang batayang klase, ibig sabihin, ang klase ng Hayop, ay may tunog na pagpapaandar ng isang miyembro ().

Sa nagmula sa klase / klase ng bata, ibig sabihin, Aso, binago namin ang kahulugan ng parehong pag-andar, ibig sabihin, tunog (), upang mapalampas ang kahulugan ng base class na ito. Katulad nito, sa iba pang nagmula sa klase, ibig sabihin, Duck, binago namin ang kahulugan ng parehong pag-andar, ibig sabihin, tunog ().

Sa pangunahing () pagpapaandar, nilikha namin ang object ng aso ng Aso at pato ng Pato. Kaya, ngayon kapag tinawag namin ang tunog na () pagpapaandar para sa aso at pato, tatawag ang hinahangad na bersyon ng klase ng tunog () na pag-andar. Maaari mong makita ang output ng programa tulad ng ipinakita sa ibaba. Kaya, sa tulong ng pag-override ng pag-andar, maaari nating makuha ang nakuha na partikular na pagpapaandar ng klase.

# isama

gamit ang namespace std;

klase ng Hayop
{
pampubliko:
walang bisatunog()
{
gastos<< 'Tunog ng hayop!' <<endl;
}

};

// Derived class - Klase ng aso
klase ng Aso:pampublikong Hayop
{
pampubliko:
walang bisatunog()
{
gastos<< 'Tunog ng aso - tumahol.' <<endl;
}
};

// Derived class - Klase ng pato
klase ng Pato:pampublikong Hayop
{
pampubliko:
walang bisatunog()
{
gastos<< 'Tunog ng pato - quack.' <<endl;
}
};


intpangunahing()
{
Aso ng aso;
Pato ng pato;

asotunog(); // tunog () ng aso
patotunog(); // tunog () ng pato

bumalik ka 0;
}

Konklusyon

Sa artikulong ito, ipinaliwanag ko ang pag-override ng pag-andar sa C ++ . Sinusuportahan ng wikang C ++ ang runtime polymorphism. Ang pag-override ng pagpapaandar ay tumutulong upang makamit ang run time polymorphism sa C ++. Ang artikulong ito ay tumingin sa konsepto ng pag-override ng pag-andar at kung paano makamit ang runtime polymorphism gamit ang overriding ng function.