Wyjaśnienie nadpisywania funkcji w C++
Opublikowany: 2022-11-09Co to jest funkcja?
Funkcja to fragment, który należy do kodu służącego do wykonania określonego zadania w programie. Ważne jest, aby mieć wiedzę z pierwszej ręki na temat dziedziczenia, aby dowiedzieć się, jak funkcja przesłaniająca dziedziczenie jest implementacją tej funkcji. Funkcja C++ to zbiór instrukcji połączonych ze sobą w celu wykonania zadania. Wszystkie programy mają funkcję main(), a poszczególne programy mają dodatkowe funkcje. Deklaracja funkcji wysyła nazwę funkcji, typ zwracany i parametry do kompilatora w celu określenia treści funkcji na podstawie definicji funkcji. Funkcja może być procedurą, metodą lub podprogramem, a wszystkie funkcje C++ składają się z nagłówka i treści.
Składnia funkcji C++:-
return_type nazwa_funkcji (lista parametrów) {
ciało funkcyjne
}
Składniki :-
- Typ zwrotu — oznacza typ wartości zwracanej przez funkcję.
- Nazwa funkcji — reprezentuje nazwę funkcji, która składa się na podpis funkcji i listę parametrów.
- Parametry — jest to symbol zastępczy wartości zwracanej przez funkcję. Gdy funkcja jest wywoływana, wartość przekazywana do parametru jest nazywana rzeczywistym parametrem.
- Ciało funkcji — treść funkcji zawiera listę instrukcji definiujących zadanie funkcji .
Jak wywołać funkcję
Funkcja musi zostać wywołana lub wywołana przed użyciem, po czym zostaje do niej przekazana kontrola w celu wykonania niezbędnego zadania. Instrukcja return zwraca następnie kontrolę do programu głównego. Parametry i nazwa funkcji muszą zostać przekazane, aby wywołać funkcję. Argumenty mogą być przekazywane do funkcji na wiele sposobów podczas jej wywoływania. Rodzaje połączeń są następujące:-
- Zadzwoń według wartości
- Zadzwoń przez odniesienie
- Zadzwoń przez wskaźnik
Ucz się kursów rozwoju oprogramowania online z najlepszych światowych uniwersytetów. Zdobywaj programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.
Zastępowanie funkcji w C++
Przesłonięcie C++ to pomysł, za pomocą którego definiuje się funkcję o tej samej nazwie. Funkcja klasy bazowej w przesłonięciu jest ponownie definiowana w klasie pochodnej, która zastępuje funkcję klasy bazowej. Implementacja polimorfizmu w czasie wykonywania może być również zdefiniowana jako nadpisywanie funkcji. Tutaj czas wykonywania programu zastępuje funkcję.
Zastępowanie funkcji umożliwia programistom użycie funkcji w klasie potomnej znajdującej się w jej klasie nadrzędnej. W rezultacie klasa podrzędna dziedziczy wszystkie składowe danych i funkcje członkowskie znalezione w klasie nadrzędnej. Aby przesłonić jakąkolwiek funkcjonalność klasy podrzędnej, należy zaimplementować przesłonięcie funkcji. Nadpisywanie funkcji odnosi się do tworzenia nowej wersji funkcji klasy nadrzędnej w klasie podrzędnej.
Składnia implementująca przesłanianie funkcji w C++
Gdy ta sama funkcja zdefiniowana zarówno w klasie bazowej, jak i pochodnej jest wywoływana przy użyciu obiektu z klasy pochodnej, wykonuje funkcję klasy pochodnej. To jest nadpisywanie funkcji w C++.
Poniżej znajduje się najczęściej używana składnia do implementacji zastępowania funkcji w C++:
// Program C++ do demonstracji nadpisywania funkcji
#include <iostream>
używając standardowej przestrzeni nazw;
klasa podstawowa {
publiczny:
nieważne drukuj() {
cout << „Funkcja podstawowa” << endl;
}
};
class Pochodne : public Base {
publiczny:
nieważne drukuj() {
cout << „Funkcja pochodna” << endl;
}
};
int main() {
Pochodna pochodna1;
pochodna1.print();
zwróć 0;
}
Wyjście
Funkcja pochodna
To na nowo definiuje funkcję klasy bazowej w klasie pochodnej. Dlatego zwracany typ, parametry_funkcji i nazwa_funkcji muszą być takie same, aby uzyskać przesłonięcie funkcji.
Popularne kursy i artykuły na temat inżynierii oprogramowania
Popularne programy | |||
Program Executive PG w tworzeniu oprogramowania - IIIT B | Program certyfikacji Blockchain - PURDUE | Program Certyfikatów Cyberbezpieczeństwa - PURDUE | MSC w informatyce - IIIT B |
Inne popularne artykuły | |||
Wynagrodzenie Cloud Engineer w USA 2021-22 | Wynagrodzenie architekta rozwiązań AWS w USA | Wynagrodzenie programisty zaplecza w USA | Wynagrodzenie programisty front-end w USA |
Wynagrodzenie programisty w USA | Pytania do rozmowy kwalifikacyjnej Scrum Master w 2022 r. | Jak rozpocząć karierę w cyberbezpieczeństwie w 2022 roku? | Opcje kariery w USA dla studentów inżynierii |
Jak działa zastępowanie funkcji w C++
Programy OOP muszą umożliwiać klasom pochodnym dziedziczenie funkcji klasy nadrzędnej. Zastępowanie funkcji umożliwia programistom zastąpienie dowolnej funkcjonalności w klasie w określonej klasie pochodnej. Jest to szczególnie przydatne, gdy klasa potomna potrzebuje wariantu funkcjonalności.
Poniżej znajduje się prosty przykład zastępowania funkcji w C++ dla lepszego zrozumienia:
#include <iostream>
używając standardowej przestrzeni nazw;
klasa nadrzędna_klasa
{
publiczny:
wirtualny pusty wydruk()
{
cout << „\nTo jest metoda print()”
” BaseClass”;
}
};
class klasa_pochodna : public parent_class
{
publiczny:
// Nadpisywanie funkcji – nowa definicja
// wypisz metodę klasy bazowej
nieważne drukowanie()
{
cout << „\nTo jest metoda print()”
„klasy pochodnej”;
}
};
// Kod kierowcy
int main()
{
obiekt_klasy_pochodnej;
obj.print();
}
Dostęp do zastąpionej funkcji w C++
Operator rozpoznawania zakresu służy do uzyskiwania dostępu do zastąpionej funkcji klasy bazowej w C++. Dostęp do zastąpionej funkcji można również uzyskać za pomocą wskaźnika klasy bazowej, aby wskazać obiekt klasy pochodnej, a następnie wywołać funkcję ze wskaźnika.
// program w C++ umożliwiający dostęp do nadpisanej funkcji
// w main() przy użyciu operatora rozpoznawania zasięgu ::
#include <iostream>
używając standardowej przestrzeni nazw;
klasa podstawowa {
publiczny:
nieważne drukuj() {
cout << „Funkcja podstawowa” << endl;
}
};
class Pochodne : public Base {
publiczny:
nieważne drukuj() {
cout << „Funkcja pochodna” << endl;
}
};
int main() {
Pochodna pochodna1, pochodna2;
pochodna1.print();
// dostęp do funkcji print() klasy Base
pochodna2.Base::print();
zwróć 0;
}
Wyjście
Funkcja pochodna
Funkcja podstawowa
Oświadczenie w składni; pochodna2.Base::print(); daje dostęp do funkcji print() klasy Base.
Wywołaj przesłoniętą funkcję z klasy pochodnej
Dziedziczenia można użyć do zmiany zachowania funkcji. Czasami jednak nie trzeba zmieniać ani zastępować funkcjonalności klasy bazowej/nadrzędnej. Zamiast tego należy dodać więcej funkcji.
Poniżej znajduje się przykład użycia funkcji przesłonięcia wywołania z klasy pochodnej.
// program w C++ do wywołania nadpisanej funkcji
// z funkcji składowej klasy pochodnej
#include <iostream>
używając standardowej przestrzeni nazw;
klasa podstawowa {
publiczny:
nieważne drukuj() {
cout << „Funkcja podstawowa” << endl;
}
};
class Pochodne : public Base {
publiczny:
nieważne drukuj() {
cout << „Funkcja pochodna” << endl;
// wywołaj nadpisaną funkcję
Base::drukuj();
}
};
int main() {
Pochodna pochodna1;
pochodna1.print();
zwróć 0;
}
Wyjście
Funkcja pochodna
Funkcja podstawowa
W tym programie przesłonięta funkcja została wywołana wewnątrz klasy Derived.
class Pochodne : public Base {
publiczny:
nieważne drukuj() {
cout << „Funkcja pochodna” << endl;
Base::drukuj();
}
};
Kod Base::print();, wywołuje nadpisaną funkcję w klasie Derived.
Przeciążanie funkcji a nadpisywanie funkcji
Można osiągnąć przeciążanie funkcji w czasie kompilacji, zwykle wykonywane w ramach klas pochodnych i bazowych. Zapewnia więcej niż jedną definicję funkcji, zmieniając podpis każdej funkcji, taki jak typ danych lub typ zwracany parametrów.
Z drugiej strony nadpisywanie funkcji można osiągnąć w czasie wykonywania. Klasa bazowa w zastępowaniu jest ponownie definiowana w klasie pochodnej z tymi samymi parametrami i tym samym typem zwracanym. Zobaczmy, jakie jeszcze cechy różnią te dwie funkcje.
Nadrzędny | Przeciążenie | |
Dziedzictwo | Wymaga dziedziczenia klas | Nie wymaga dziedziczenia klas |
Podpis funkcji | Różni się podpisem pod względem typu lub liczby parametrów. | Sygnatury funkcji pozostają takie same |
Zakres funkcji | Funkcje różnią się zakresem | Posiada ten sam zakres |
Zachowanie funkcji | Wymagane, gdy funkcja klasy pochodnej działa inaczej lub z dodatkową funkcjonalnością niż funkcja klasy bazowej. | Wymagane, gdy funkcje o tej samej nazwie mają różne zachowania w oparciu o podane parametry. |
Wniosek
Zastępowanie funkcji w C++ pomaga zaoszczędzić miejsce w pamięci oraz zachować czytelność i spójność dowolnego kodu. Pomaga również w łatwym wielokrotnym użyciu kodu. Nie trzeba dodawać, że wiedza na temat nadpisywania funkcji jest ważną umiejętnością, którą należy posiadać, jeśli widzisz dla siebie przyszłość w programowaniu.
Jeśli chcesz dołączyć do niezawodnego i premium kursu, aby rozpocząć swoją karierę w tej dziedzinie, możesz zapisać się na upGrad's Master of Science in Computer Science na upGrad. Niektóre z kluczowych punktów tego programu są następujące:-
- Naucz się stosu MERN, mikroserwisów, JavaScript itp.
- Zdrowa nauka w Cloud Labs
- Eksperymentuj z narzędziami używanymi na Netflix, LinkedIn, Facebook itp.
- Zdobądź umiejętności w zakresie ponad 10 narzędzi programistycznych i języków
- Wsparcie dla studentów 24/7
Jak odbywa się nadpisywanie funkcji?
Przesłonięcie funkcji C++ odbywa się poprzez dziedziczenie, tj. gdy jedna klasa dziedziczy inną klasę. Gdy klasa pochodna i klasa bazowa posiadają funkcje składowe o tym samym typie zwracanym, nazwie i liście argumentów, nazywa się to zastępowaniem funkcji.
Jaka jest różnica między przeciążaniem funkcji a przesłanianiem funkcji w C++?
Zastępowanie funkcji ma miejsce, gdy funkcje mają ten sam prototyp w klasie podstawowej i pochodnej. Przeciążanie funkcji jest wykonywane, gdy w jednej klasie istnieje więcej niż jedna funkcja o podobnej nazwie.
Jakie są cechy przeciążania funkcji w C++?
Przeciążanie funkcji w C++ służy przede wszystkim do poprawy czytelności kodu. Programiści go używają, więc nie muszą zapamiętywać wielu nazw funkcji. Klasy z wieloma funkcjami, różnymi parametrami i tą samą nazwą nazywane są przeciążonymi.