C ++ Funktsiooni ülimuslikkus

Selles õppetükis õpime näidete abil C ++ funktsioonide alistamist.

Nagu me teame, on pärimine OOP-i omadus, mis võimaldab meil luua tuletatud klasse baasklassist. Tuletatud klassid pärivad baasklassi tunnused.

Oletame, et sama funktsioon on määratletud nii tuletatud klassis kui ka põhiklassis. Kui nimetame seda funktsiooni tuletatud klassi objekti abil, täidetakse tuletatud klassi funktsioon.

Seda nimetatakse funktsioonis C ++ ülimuslikuks . Tuletatud klassi funktsioon alistab põhiklassi funktsiooni.

Näide 1: Funktsiooni C ++ alistamine

 // 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; )

Väljund

 Tuletatud funktsioon

Siin sama funktsiooni print()on määratletud nii Baseja Derivedklassi.

Seega, kui me nimetame print()alates Derivedobjekti derived1 on print()alates Derivedtäidetakse ülekaaluka funktsiooni Base.

Funktsiooni ülekandmine C ++ keeles

Juurdepääs alistatud funktsioonile C ++ keeles

Baasklassi tühistatud funktsioonile juurdepääsemiseks kasutame ulatuseralduse operaatorit ::.

Alandatud funktsioonile pääseme juurde ka selleks, et kasutada tuletatud klassi objektile osutamiseks baasklassi kursorit ja seejärel kutsuda funktsioon sellest kursorist.

Näide 2: C ++ Juurdepääsu alistamise funktsioon baasklassile

 // 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; )

Väljund

 Tuletatud funktsioon Põhifunktsioon

Siin see avaldus

 derived2.Base::print();

pääseb ligi print()klassi Base funktsioonile.

Juurdepääs alistatud funktsioonile, kasutades tuletatud klassi objekti C ++ keeles

Näide 3: C ++ kõne alistatud funktsioon tuletatud klassist

 // 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; )

Väljund

 Tuletatud funktsioon Põhifunktsioon

Selles programmis oleme kutsunud Derivedklassi enda sisse kirjutatud funktsiooni .

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

Pange tähele koodi Base::print();, mis kutsub Derivedklassi sees alistatud funktsiooni .

Juurdepääs tühistatud funktsioonile tuletatud klassis C ++ keeles

Näide 4: C ++ kõne tühistatud funktsioon kursori abil

 // 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.

Huvitavad Artiklid...