Wyjaśnienie nadpisywania funkcji w C++

Opublikowany: 2022-11-09

Spis treści

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