W C ++, jeśli funkcja o tej samej nazwie istnieje zarówno w klasie podstawowej, jak i pochodnej, funkcja klas pochodna zastępuje funkcję klasy podstawowej. Pokazuje to, że jeśli funkcja zostanie wywołana z obiektem klasy pochodnej, zamiast funkcji klasy podstawowej, funkcja klasy pochodnej zostanie wykonana. To jest znane jako funkcja zastępująca w C++, i pozwala klasom pochodnym zmodyfikować zachowanie funkcji klasy podstawowej, aby odpowiadało ich konkretnym potrzebom. Nadrzędny jest ważne, ponieważ pozwala na ponowne użycie kodu, ułatwiając programistom modyfikację kodu i usuwanie potrzeby zapisu kodu od zera.
W tym artykule pokażemy, jak korzystać z "nadpisanie" W języku programowania C ++.
Treść tego artykułu:
Jak użyć zastąpienia w c++
Używać 'nadpisanie' W C ++ musimy po prostu dodać go po deklaracji funkcji w klasie pochodnej. Oto przykład:
Przykład 1: Zastępowanie funkcji C ++
Dostarczany kod pokazuje, że funkcja zastępuje w C++.
#włączać
za pomocą przestrzeni nazw Std;
Klasa rodzic
publiczny:
void Linuxhint_print ()
Cout << "This is Base Function" << endl;
;
Klasa Dziecko: Public Parent
publiczny:
void Linuxhint_print ()
Cout << "This is Derived Function" << endl;
;
int main ()
Dziecko child_dered;
Child_devived.Linuxhint_print ();
powrót 0;
Mamy klasę nadrzędną z funkcją o nazwie Linuxhint_print () To drukuje wiadomość do konsoli. Następnie tworzymy klasę dziecięcą, która publicznie dziedziczy po klasie rodziców i zastępuje Linuxhint_print () funkcja z własną implementacją, która również drukuje wiadomość do konsoli.
W funkcji Main () obiekt klasy dziecka jest tworzony i nazywany Linuxhint_print () funkcjonować. Ponieważ klasa dziecka zastępuje Linuxhint_print () funkcja klasy nadrzędnej, wyjście będzie Jest to funkcja pochodna zamiast To jest funkcja podstawowa.
Przykład 2: C ++ dostęp do zastąpienia funkcji do klasy podstawowej
Czasami możemy chcieć wywołać zastąpioną funkcję w klasie podstawowej z klasy pochodnej. Możemy to zrobić za pomocą operatora rozdzielczości zakresu „::”. Oto przykład:
#włączać
za pomocą przestrzeni nazw Std;
baza klas
publiczny:
Virtual Void Test ()
Cout << "This is Base Class" << endl;
;
Klasa pochodna: publiczna baza
publiczny:
void test ()
Baza :: test ();
Cout << "This is Derived Class" << endl;
;
int main ()
Pochodne upodobj;
pochodneBj.test();
powrót 0;
Powyższy kod określa dwie klasy Baza I Pochodny, gdzie klasa pochodna dziedziczy po klasie podstawowej. Obie klasy mają funkcję o nazwie test (), która wyświetla wiadomość na konsoli. Funkcja testu () w klasie podstawowej jest deklarowana jako wirtualna, co wskazuje, że można ją zastąpić za pomocą klas pochodnych.
W klasie pochodnej zastępujemy funkcję testu () i wywołujemy funkcję klasy podstawowej () za pomocą za pomocą Baza :: test () drukować To jest podstawa Klasa do konsoli. Następnie drukujemy To jest klasa pochodna do konsoli po wywołaniu funkcji klasy podstawowej ().
Jeśli utworzymy obiekt klasy pochodnej i wywołamy jej funkcję testu (), wyjście będzie To jest podstawa Klasa śledzony przez To jest klasa pochodna, wskazując, że klasa pochodna zastąpiła funkcję testu klasy podstawowej i dodała własnego zachowania.
Przykład 3: Zastąpiona funkcja C ++ z klasą pochodną
Możemy również wywołać nadrzędną funkcję w klasie podstawowej spoza hierarchii klas, używając wskaźnika do klasy podstawowej. Oto przykład:
Ten kod pokazuje funkcję zastępującą w C ++ za pomocą dziedzictwa.
#włączać
za pomocą przestrzeni nazw Std;
baza klas
publiczny:
void test ()
Cout << "This is Base Function" << endl;
;
Klasa pochodna: publiczna baza
publiczny:
void test ()
Cout << "This is Derived Function" << endl;
// Funkcja przesadzona
Baza :: test ();
;
int main ()
Pochodne 1;
pochodne 1.test();
powrót 0;
Istnieją dwie klasy zdefiniowane, podstawowe i pochodne. Tutaj, w powyższym kodzie, klasa pochodna pochodzi z bazy za pomocą specyfikatora dziedziczenia publicznego.
Obie klasy mają nazwaną funkcję członka test(), który wyświetla wiadomość na konsoli. Jednak w klasie pochodnej funkcja test () jest zastąpiona, aby wydrukować inną komunikat, a także wywołać funkcję testu () klasy podstawowej za pomocą operatora rozdzielczości zakresu (: :).
Funkcja main () ma obiekt klasy pochodnej, a jej funkcja test () jest wywoływana. Gdy funkcja testu () jest wywoływana na obiekcie Deraived1, drukuje Jest to funkcja pochodna do konsoli, a następnie wywołuje funkcję testu () klasy podstawowej, która drukuje To jest funkcja podstawowa do konsoli.
Przykład 4: Funkcja zastępująca połączenie C ++ za pomocą wskaźnika
Możemy również wywołać nadrzędną funkcję w klasie podstawowej za pomocą wskaźnika do klasy pochodnej. Oto przykład:
#włączać
za pomocą przestrzeni nazw Std;
baza klas
publiczny:
void test ()
Cout << "This is Base Function" << endl;
;
Klasa pochodna: publiczna baza
publiczny:
void test ()
Cout << "This is Derived Function" << endl;
;
int main ()
Pochodne 1;
// wskaźnik do pochodzenia 1
Podstawa* ptr = &derived1;
// Funkcja klas bazowych wywołania
ptr-> test ();
powrót 0;
W powyższym programie zdefiniowane są dwie klasy, podstawowe i wyprowadzone. Obie klasy mają funkcję członka o nazwie test (), która wyświetla wiadomość na konsoli.
w główny() Funkcja, obiekt klasy pochodnej jest tworzony, a wskaźnik PTR podstawy typu jest tworzona i inicjowana, aby wskazać obiekt Derived1.
Funkcja testu () jest wywoływana na ptr wskaźnik, który jest typu. Funkcję testu () w klasie podstawowej można zastąpić w dowolnej klasie pochodnej za pomocą wskaźnika.
Tutaj, gdy funkcja test () jest wywoływana na ptr wskaźnik, drukuje To jest funkcja podstawowa do konsoli zamiast Jest to funkcja pochodna.
Różnica między nadmiernym i przeciążeniem w C++
Nadrzędne i przeciążenie to dwie ważne pojęcia w programowaniu zorientowanym na obiekty. W C ++ są one używane do zapewnienia zachowań polimorficznych, co pozwala różnym obiektom inaczej reagować na tę samą wiadomość.
Przeciążenie tworzy wiele funkcji o tej samej nazwie, ale posiadanie różnych parametrów lub typów argumentów.
Nadrzędny, Z drugiej strony odnosi się do procesu przedefiniowania funkcji w klasie pochodnej, która zawiera tę samą nazwę co funkcja klasy podstawowej.
Kluczowa różnica Między nadrzędnym a przeciążeniem jest to, że nadrzędność polega na przedefiniowaniu funkcji w klasie pochodnej o tej samej nazwie i podpisie, co ta w klasie podstawowej. Natomiast przeciążenie obejmuje tworzenie wielu zadań o tej samej nazwie, ale różne parametry lub typy argumentów.
Wniosek
'nadpisanie' W C ++ może zapewnić, że funkcja w klasie pochodnej zastępuje wirtualną funkcję klasy podstawowej. W tym artykule omówiono różne sposoby zastępowania funkcji. W C ++ funkcja może być zastąpiona w obie strony od podstawy do pochodnej lub odwrotnie, możemy również zdefiniować wskaźnik do klasy podstawowej i zastąpić funkcję pochodną.