Nadpisywanie funkcji C++

C Function Overriding



W tym artykule omówimy nadpisywanie funkcji w języku programowania C++. C++ obsługuje polimorfizm środowiska uruchomieniowego.

W zastępowaniu funkcji klasa potomna redefiniuje funkcję, która jest już zdefiniowana w jej klasie nadrzędnej.







Umożliwia programiście zapewnienie funkcjonalności specyficznej dla klasy pochodnej (nawet jeśli jest ona zdefiniowana w klasie bazowej).



Zobaczymy teraz kilka przykładów i zrozumiemy koncepcję nadpisywania funkcji w C++.



Przykład 1

W poniższym przykładowym kodzie zdefiniowałem dwie klasy – klasę bazową i klasę pochodną. Klasa bazowa ma funkcję składową, tj. disp(). Derived_Class jest dziedziczona z Base_Class. Funkcja disp() jest obecna w Base_Class, a następnie ponownie zdefiniowana w Derived_Class.





W funkcji main() tworzony jest obiekt klasy Derived_Class, czyli d. Następnie wywołujemy funkcję disp() w obiekcie klasy pochodnej, więc funkcja w klasie pochodnej zostanie wywołana. Wersja klasy bazowej jest tutaj ignorowana. Poniżej możesz zobaczyć dane wyjściowe jako – funkcja disp() w klasie pochodnej.

#włączać

przy użyciu standardowej przestrzeni nazw;

//klasa bazowa
class Base_Class
{
publiczny:
próżniawykorzystać()
{
koszt<< 'funkcja disp() w klasie bazowej.' <<koniec;
}

};

//Klasy pochodnej
klasa Pochodna_Klasa:public Base_Class
{
publiczny:
próżniawykorzystać()
{
koszt<< 'funkcja disp() w klasie pochodnej' <<koniec;
}
};

intGłówny()
{
Pochodna_Klasa d;
D.wykorzystać(); //funkcja disp() na obiekcie klasy pochodnej
powrót 0;
}



Przykład-2

W tym przykładzie zobaczymy, jak celowo wywołać wersję funkcji w klasie bazowej za pośrednictwem obiektu klasy pochodnej. W definicji funkcji klasy pochodnej używamy operatora rozpoznawania zasięgu [::] do wywołania wersji funkcji klasy bazowej.

#włączać

przy użyciu standardowej przestrzeni nazw;

class Base_Class
{
publiczny:
próżniawykorzystać()
{
koszt<< 'funkcja disp() w klasie bazowej.' <<koniec;
}

};

klasa Pochodna_Klasa:public Base_Class
{
publiczny:
próżniawykorzystać()
{
Base_Class::wykorzystać(); //Wywołaj wersję disp() klasy bazowej
}
};

intGłówny()
{
Pochodna_Klasa d;
D.wykorzystać();
powrót 0;
}

Przykład-3

To kolejny przykład zastępowania funkcji. W tym przykładzie stworzyliśmy klasę nadrzędną – Animal oraz dwie klasy pochodne – Duck i Dog. Klasa bazowa, tj. klasa Animal, ma funkcję członkowską sound().

W klasie pochodnej/klasie potomnej, tj. Dog, przedefiniowaliśmy tę samą funkcję, tj. sound(), aby nadpisać jej definicję klasy bazowej. Podobnie w drugiej klasie pochodnej, tj. Duck, przedefiniowaliśmy tę samą funkcję, tj. sound().

W funkcji main() stworzyliśmy obiekt pies Pies i Kaczka Kaczki. Tak więc teraz, gdy wywołamy funkcję sound() dla psa i kaczki, wywołamy funkcję klasy pochodnej funkcji sound(). Możesz zobaczyć wyjście programu, jak pokazano poniżej. Tak więc za pomocą nadpisywania funkcji możemy wywołać funkcję specyficzną dla klasy pochodnej.

#włączać

przy użyciu standardowej przestrzeni nazw;

klasa zwierząt
{
publiczny:
próżniadźwięk()
{
koszt<< 'Odgłos zwierząt!' <<koniec;
}

};

//Klasa pochodna – Klasa psa
klasa psa:zwierzę publiczne
{
publiczny:
próżniadźwięk()
{
koszt<< - Dźwięk psa - szczekanie. <<koniec;
}
};

//Klasa pochodna – Klasa kaczki
klasa kaczka:zwierzę publiczne
{
publiczny:
próżniadźwięk()
{
koszt<< — Dźwięk kaczki — kwak. <<koniec;
}
};


intGłówny()
{
Pies pies;
Kaczka kaczka;

pies.dźwięk(); //dźwięk() psa
kaczka.dźwięk(); //sound() kaczki

powrót 0;
}

Wniosek

W tym artykule wyjaśniłem nadpisywanie funkcji w C++ . Język C++ obsługuje polimorfizm środowiska uruchomieniowego. Przesłanianie funkcji pomaga uzyskać polimorfizm w czasie wykonywania w C++. W tym artykule przyjrzano się koncepcji nadpisywania funkcji i sposobom uzyskania polimorfizmu w czasie wykonywania przy użyciu nadpisywania funkcji.