C ++ Funkcijos svarbesnė

Šioje pamokoje su pavyzdžių pagalba sužinosime apie funkcijų nepaisymą C ++.

Kaip žinome, paveldėjimas yra OOP bruožas, leidžiantis kurti išvestines klases iš bazinės klasės. Išvestinės klasės paveldi pagrindinės klasės požymius.

Tarkime, ta pati funkcija apibrėžta ir išvestinėje, ir pagrindinėje klasėje. Dabar, jei šią funkciją vadinsime naudodami išvestinės klasės objektą, išvestinės klasės funkcija bus vykdoma.

Tai vadinama funkcija, viršijančia C ++. Išvestinės klasės funkcija pakeičia pagrindinės klasės funkciją.

1 pavyzdys: C ++ funkcijos viršijimas

 // C++ program to demonstrate function overriding #include using namespace std; class Base ( public: void print() ( cout << "Base Function" << endl; ) ); class Derived : public Base ( public: void print() ( cout << "Derived Function" << endl; ) ); int main() ( Derived derived1; derived1.print(); return 0; )

Rezultatas

 Išvestinė funkcija

Čia ta pati funkcija print()apibrėžta Baseir Derivedklasėse, ir klasėse.

Taigi, kai mes iškviečiame print()Derivedgauto objekto1, print()Derivedyra vykdomas pakeičiant funkciją Base.

Funkcijos, viršijančios C ++, veikimas

Prieiga prie nepaisomos funkcijos C ++

Norėdami pasiekti nepaisomą pagrindinės klasės funkciją, mes naudojame srities skiriamosios gebos operatorių ::.

Mes taip pat galime pasiekti nepaisomą funkciją, naudodami pagrindinės klasės žymeklį, norėdami nukreipti į išvestinės klasės objektą, tada paskambinę funkcijai iš to rodyklės.

2 pavyzdys: C ++ prieigos nepaisoma funkcija prie pagrindinės klasės

 // C++ program to access overridden function // in main() using the scope resolution operator :: #include using namespace std; class Base ( public: void print() ( cout << "Base Function" << endl; ) ); class Derived : public Base ( public: void print() ( cout << "Derived Function" << endl; ) ); int main() ( Derived derived1, derived2; derived1.print(); // access print() function of the Base class derived2.Base::print(); return 0; )

Rezultatas

 Išvestinė funkcija Pagrindinė funkcija

Čia šis teiginys

 derived2.Base::print();

pasiekia „ print()Base“ klasės funkciją.

Pasiekite nepaisomą funkciją naudodamas išvestinės klasės objektą C ++

3 pavyzdys: C ++ skambučių nepaisoma išvestinės klasės funkcija

 // C++ program to call the overridden function // from a member function of the derived class #include using namespace std; class Base ( public: void print() ( cout << "Base Function" << endl; ) ); class Derived : public Base ( public: void print() ( cout << "Derived Function" << endl; // call overridden function Base::print(); ) ); int main() ( Derived derived1; derived1.print(); return 0; )

Rezultatas

 Išvestinė funkcija Pagrindinė funkcija

Šioje programoje mes pavadinome nepaisomą funkciją pačios Derivedklasės viduje.

 class Derived : public Base ( public: void print() ( cout << "Derived Function" << endl; Base::print(); ) );

Atkreipkite dėmesį į kodą Base::print();, kuris Derivedklasėje iškviečia nepaisomą funkciją .

Pasiekite nepaisomą funkciją išvestinėje klasėje C ++

4 pavyzdys: C ++ skambučio nepaisoma funkcija naudojant žymeklį

 // C++ program to access overridden function using pointer // of Base type that points to an object of Derived class #include using namespace std; class Base ( public: void print() ( cout << "Base Function" << endl; ) ); class Derived : public Base ( public: void print() ( cout << "Derived Function" 

Output

 Base Function

In this program, we have created a pointer of Base type named ptr. This pointer points to the Derived object derived1.

 // pointer of Base type that points to derived1 Base* ptr = &derived1;

When we call the print() function using ptr, it calls the overridden function from Base.

 // call function of Base class using ptr ptr->print();

This is because even though ptr points to a Derived object, it is actually of Base type. So, it calls the member function of Base.

In order to override the Base function instead of accessing it, we need to use virtual functions in the Base class.

Įdomios straipsniai...