C++

Przeciążanie funkcji C++

Przeciążanie funkcji C++

C++ to elastyczny język programowania ogólnego przeznaczenia. Ten język programowania został pierwotnie stworzony przez duńskiego informatyka Bjarne Stroustrupa w 1985 roku. C++ obsługuje polimorfizm, dziedziczenie i nie tylko. W tym artykule omówiono przeciążanie funkcji w celu uzyskania polimorfizmu w czasie kompilacji w języku programowania C++.

Co to jest funkcja?

Funkcja to nic innego jak określony fragment kodu, który wykonuje określone zadanie na podstawie dostarczonych danych wejściowych i zwraca użytkownikowi żądane wyniki w postaci danych wyjściowych. Funkcje służą do eliminacji powtarzającego się kodu w dużych bazach kodu.

Po zdefiniowaniu funkcji możesz użyć jej ponownie w późniejszym czasie, w tym samym lub innym programie.

Składnia funkcji

Funkcja w C++ ma następującą składnię:

returnType nazwa funkcji (lista_parametrów)



zwróć wartość_zwrotu;

ReturnType, parameter_list i return są opcjonalne. Funkcja w C++ może zwrócić maksymalnie jedną wartość. Jeśli funkcja nie zwraca żadnej wartości, returnType należy zdefiniować jako void.

Co to jest przeciążanie funkcji??

W C++ wiele definicji funkcji może mieć tę samą nazwę funkcji, ale z różnymi parametrami. Nazywa się to przeciążaniem funkcji. Za pomocą funkcji przeciążania funkcji można uzyskać polimorfizm w czasie kompilacji w C++.

Funkcje można przeciążać w następujący sposób:

  1. Liczba parametrów może być różna
  2. Typ danych parametrów może być inny
  3. Kolejność parametrów może być inna

Jednak zwracana wartość nie jest brana pod uwagę przy przeciążaniu funkcji. 

Następujące funkcje są przeciążone:

  1. int dodawanie (int a, int b)
  2. dodatek pływaka (float f, gloat g)
  3. dodawanie zmiennoprzecinkowe (liczba f, int i)
  4. dodawanie zmiennoprzecinkowe (int i, zmiennoprzecinkowe f)
  5. int dodawanie (int a, int b, int c)
  6. dodawanie pływaka (float f, float g, float h)

Jak widać, za pomocą funkcji przeciążania funkcji w C++ może istnieć wiele definicji/funkcjonalności o tej samej nazwie funkcji i w tym samym zakresie.

Bez funkcji przeciążania funkcji musiałbyś napisać osobną funkcję [na przykład add_1(), add_2() itd.] dla każdej odmiany. Na przykład może być konieczne napisanie add_1(), aby dodać dwie liczby całkowite, add_2(), aby dodać dwie liczby zmiennoprzecinkowe i tak dalej. Jednak, jak widać powyżej, funkcja przeciążania funkcji może być używana do definiowania wielu odmian funkcji „addition()” przy zachowaniu tej samej nazwy funkcji.

Następujące funkcje nie są uważane za przeciążone, ponieważ jedyną różnicą między nimi jest typ zwracany (typ powrotu nie jest brany pod uwagę przy przeciążaniu funkcji w C++):

  1. int dodawanie (int a, int b)
  2. dodawanie zmiennoprzecinkowe (int a, int b)

Przykłady

Teraz, gdy rozumiesz pojęcie przeciążania funkcji, przejdziemy przez kilka działających przykładowych programów, aby lepiej zrozumieć tę koncepcję. Omówimy następujące przykłady:

  1. Przykład 1: Prosta funkcja
  2. Przykład 2: Prosta funkcja dodawania
  3. Przykład 3: Przeciążenie funkcji (1)
  4. Przykład 4: Przeciążenie funkcji (2)
  5. Przykład 5: Przeciążenie funkcji (3)

Pierwsze dwa przykłady wyjaśniają, jak działają normalne funkcje w C++, podczas gdy ostatnie trzy przykłady demonstrują funkcję przeciążania funkcji w C++.

Przykład 1: Prosta funkcja

W tym przykładzie pokażemy, jak można zdefiniować i wywołać prostą funkcję w C++. Zdefiniujemy klasę o nazwie „Display” i funkcję publiczną o nazwie „display().” Z funkcji „main()” wywołamy funkcję „display()” za pomocą obiektu klasy „Display” (d).

#zawierać
przy użyciu standardowej przestrzeni nazw;
klasa Wyświetlacz

publiczny:
nieważne wyświetlanie()

Cout << "Hello World!" << endl;

;
int main()

Wyświetlacz d;
re.pokaz();
zwróć 0;

Przykład 2: Prosta funkcja dodawania

W tym przykładzie pokażemy, jak zdefiniować prostą funkcję „addition()” w C++. Zdefiniujemy klasę o nazwie „DemoAdd” i funkcję publiczną o nazwie „addition().” Z funkcji „main()” wywołamy funkcję „addition()” za pomocą obiektu klasy „DemoAdd” (d).

W tym przykładzie bieżąca implementacja funkcji „addition()” akceptuje tylko dwa parametry całkowite. Oznacza to, że bieżąca funkcja „addition()” może dodać tylko dwie liczby całkowite.

Aby dodać trzy liczby całkowite zamiast dwóch, można zdefiniować funkcję o innej nazwie, np. „addition_1()”. W C++ funkcja może być przeciążona, co oznacza, że ​​można zdefiniować inną definicję funkcji „addition()”, aby dodać trzy liczby całkowite i zachować tę samą nazwę,.mi., "dodanie().” W następnym przykładzie przyjrzymy się, jak przeciążyć funkcję „addition()”.

#zawierać
przy użyciu standardowej przestrzeni nazw;
klasa DemoDodaj

publiczny:
int dodawanie(int a, int b)

int wynik;
wynik = a + b;
zwróć wynik;

;
int main()

DemoDodaj d;
int i1 = 10, i2 = 20, res;
res = d.dodatek (i1, i2);
Cout << "Result = " << res << endl;
zwróć 0;

Przykład 3: Przeciążenie funkcji (1)

W poprzednim przykładzie zdefiniowaliśmy funkcję „addition()”, aby dodać dwie liczby całkowite i zwrócić obliczony wynik. Teraz w tym przykładzie przeciążymy funkcję „addition()”, aby dodać trzy liczby całkowite. Tak więc będziemy mogli wywołać funkcję „addition()” z dwoma argumentami całkowitymi, a także trzema argumentami całkowitymi.

Bez funkcji przeciążania funkcji musielibyśmy napisać inną funkcję o innej nazwie.

#zawierać
przy użyciu standardowej przestrzeni nazw;
klasa DemoDodaj

publiczny:
// Pierwsza definicja funkcji add()
int dodawanie(int a, int b)

int wynik;
wynik = a + b;
zwróć wynik;

// Przeciążona wersja funkcji add()
int dodawanie(int a, int b, int c)

int wynik;
wynik = a + b + c;
zwróć wynik;

;
int main()

DemoDodaj d;
int i1 = 10, i2 = 20, i3 = 30, res1, res2;
res1 = d.dodatek (i1, i2); // add() z 2 parametrami
res2 = d.addycja (i1, i2, i3); // add() z 3 parametrami
Cout << "Result = " << res1 << endl;
Cout << "Result = " << res2 << endl;
zwróć 0;

Przykład 4: Przeciążenie funkcji (2)

We wcześniejszych częściach tego artykułu dowiedziałeś się, że przeciążanie funkcji może być wykonywane na podstawie różnic w typach parametrów. Tutaj przeciążyliśmy funkcję „addition()” na podstawie typu danych parametru parameter. W pierwszej wersji funkcji dodawania dodamy dwie zmienne typu integer; a w drugiej wersji dodamy dwie zmienne typu float.

#zawierać
przy użyciu standardowej przestrzeni nazw;
klasa DemoDodaj

publiczny:
// Pierwsza definicja dodawania()
int dodawanie(int a, int b)

int wynik;
wynik = a + b;
zwróć wynik;

// Przeciążona definicja funkcji
dodawanie pływaka (pływak f, pływak g)

wynik zmiennoprzecinkowy;
wynik = f + g;
zwróć wynik;

;
int main()

DemoDodaj d;
int i1 = 10, i2 = 20, res1;
pływak f1 = 10.5, f2 = 20.7, res2;
res1 = d.dodatek (i1, i2); // dodawanie(int a, int b) zostanie nazwane
res2 = d.dodawanie (f1, f2); // dodawanie(liczba f, płaskie g) zostanie nazwane
Cout << "Result = " << res1 << endl;
Cout << "Result = " << res2 << endl;
zwróć 0;

Przykład 5: Przeciążenie funkcji (3)

W tym przykładzie funkcja „addition()” jest przeciążona na podstawie różnic w kolejności na liście parametrów. To kolejny sposób na przeciążenie funkcji w C++.

#zawierać
przy użyciu standardowej przestrzeni nazw;
klasa DemoDodaj

publiczny:
// Pierwsza definicja funkcji add()
dodawanie zmiennoprzecinkowe (int a, zmiennoprzecinkowe b)

wynik zmiennoprzecinkowy;
wynik = (zmiennoprzecinkowa)a + b;
zwróć wynik;

// Przeciążona definicja funkcji add()
dodawanie zmiennoprzecinkowe(liczba a, int b)

wynik zmiennoprzecinkowy;
wynik = a + (zmiennoprzecinkowa)b;
zwróć wynik;

;
int main()

DemoDodaj d;
int i1 = 10;
pływak f1 = 10.5, res1, res2;
res1 = d.dodawanie (i1, f1); // dodawanie(int a, float b) zostanie wywołane
res2 = d.dodawanie(f1, i1); // dodawanie(float a, int b) zostanie nazwane
Cout << "Result = " << res1 << endl;
Cout << "Result = " << res2 << endl;
zwróć 0;

Wniosek

C++ to uniwersalny i elastyczny język programowania, który jest szeroko stosowany w różnych dziedzinach. Ten język programowania obsługuje polimorfizm zarówno w czasie kompilacji, jak i w czasie wykonywania. W tym artykule dowiedziałeś się, jak osiągnąć polimorfizm w czasie kompilacji w C++ za pomocą funkcji przeciążania funkcji. Jest to bardzo przydatna funkcja w C++, która pomaga programistom pisać czytelny kod. Może być również pomocny przy pisaniu kodu wielokrotnego użytku.

Gry Przydatne narzędzia dla graczy Linuksa
Przydatne narzędzia dla graczy Linuksa
Jeśli lubisz grać w gry w systemie Linux, prawdopodobnie używałeś aplikacji i narzędzi, takich jak Wine, Lutris i OBS Studio, aby poprawić wrażenia z ...
Gry Zremasterowane gry HD dla Linuksa, które nigdy wcześniej nie zostały wydane na Linuksa
Zremasterowane gry HD dla Linuksa, które nigdy wcześniej nie zostały wydane na Linuksa
Wielu twórców gier i wydawców wymyśla remaster HD starych gier, aby przedłużyć żywotność serii, prosimy fanów o kompatybilność z nowoczesnym sprzętem ...
Gry Jak używać AutoKey do automatyzacji gier Linux
Jak używać AutoKey do automatyzacji gier Linux
AutoKey to narzędzie do automatyzacji pulpitu dla systemów Linux i X11, zaprogramowane w Python 3, GTK i Qt. Korzystając ze skryptów i funkcji MAKRO, ...