Przeciążenie funkcji C ++

Przeciążenie funkcji C ++

C ++ jest elastycznym językiem programowania ogólnego przeznaczenia. Ten język programowania został pierwotnie stworzony przez Bjarne Stroustrup, duński informatyk, w 1985 roku. C ++ obsługuje polimorfizm, dziedzictwo i więcej. W tym artykule obejmuje przeciążenie funkcji, aby osiągnąć polimorfizm w czasie kompilacji w języku programowania C ++.

Co to jest funkcja?

Funkcja jest niczym więcej niż określonym kawałkiem kodu, który wykonuje określone zadanie na podstawie dostarczonych danych wejściowych i zwraca żądane wyniki użytkownikowi w formie wyjścia. Funkcje służą do eliminowania powtarzalnego kodu w dużych bazach kodowych.

Po zdefiniowaniu funkcji możesz ponownie go wykorzystać w późniejszym momencie, w tym samym programie lub w innym programie.

Składnia funkcji

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

Funkcja powracająca (parametr_list)



return return_value;

ReturnType, parametr_list i instrukcja powrotu są opcjonalne. Funkcja w C ++ może zwrócić maksymalnie jedną wartość. Jeśli funkcja nie zwraca żadnej wartości, typ zwrotny powinien być zdefiniowany jako pustka.

Co to jest przeciążenie funkcji?

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

Funkcje można przeładować na następujące sposoby:

  1. Liczba parametrów może być inna
  2. Typ danych parametrów może być inny
  3. Sekwencja parametrów może być inna

Jednak wartość zwracania nie jest brana pod uwagę w przypadku przeciążenia funkcji.

Poniższe funkcje są przeciążone:

  1. int dodanie (int a, int b)
  2. Dodatek Float (Float F, Gloat G)
  3. Float dodanie (float f, int i)
  4. Float dodanie (int i, float f)
  5. Int dodanie (int a, int b, int c)
  6. Float dodanie (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 musisz napisać osobną funkcję [na przykład dodawanie_1 (), dodatku_2 () itp.]. Na przykład może być konieczne napisać dodatek_1 (), aby dodać dwie liczby całkowite, dodatek_2 (), aby dodać dwa pływaki i tak dalej. Jednak, jak widać powyżej, funkcję przeciążenia funkcji można użyć do zdefiniowania wielu wariantów funkcji „Dodawaj ()”, jednocześnie zachowując tę ​​samą nazwę funkcji.

Poniższe funkcje nie są uważane za przeciążone, ponieważ jedyną różnicą między tymi dwoma jest typ powrotu (typ powrotu nie jest brany pod uwagę dla przeciążenia funkcji w C ++):

  1. int dodanie (int a, int b)
  2. Float Dodanie (int a, int b)

Przykłady

Teraz, gdy rozumiesz koncepcję przeciążenia 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 pokazują funkcję przeciążenia funkcji w C++.

Przykład 1: Prosta funkcja

W tym przykładzie pokażemy, w jaki sposób można zdefiniować i wywołać prostą funkcję++. Zdefiniujemy klasę o nazwie „Wyświetl” i funkcję publiczną o nazwie „Display ().„Z funkcji„ Main () ”wywołamy funkcję„ display () ”za pomocą obiektu klasy„ Display ”(D).

#włączać
za pomocą przestrzeni nazw Std;
Wyświetlacz klasy

publiczny:
void display ()
Cout << "Hello World!" << endl;

;
int main ()

Wyświetlacz d;
D.wyświetlacz();
powrót 0;

Przykład 2: Prosta funkcja dodawania

W tym przykładzie zademonstrujemy, jak zdefiniować prostą funkcję „dodawanie ()” w C++. Zdefiniujemy klasę o nazwie „Demoadd” i funkcję publiczną o nazwie „Dodatek ().„Z funkcji„ Main () ”wywołamy funkcję„ dodaj () ”za pomocą obiektu klasy„ Demoadd ”(D).

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

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

#włączać
za pomocą przestrzeni nazw Std;
klasa Demoadd

publiczny:
int dodawanie (int a, int b)
Int wynik;
wynik = a + b;
wynik zwrotu;

;
int main ()
Demoadd d;
int i1 = 10, i2 = 20, res;
res = d.dodanie (i1, i2);
Cout << "Result = " << res << endl;
powrót 0;

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

W poprzednim przykładzie zdefiniowaliśmy funkcję „dodawanie ()”, aby dodać dwie liczby całkowite i zwrócić obliczony wynik. Teraz, w tym przykładzie, przeciądzimy funkcję „dodaj ()”, aby dodać trzy liczby całkowite. Tak więc będziemy mogli wywołać funkcję „dodawanie ()” 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.

#włączać
za pomocą przestrzeni nazw Std;
klasa Demoadd

publiczny:
// Pierwsza definicja funkcji dodatku ()
int dodanie (int a, int b)

Int wynik;
wynik = a + b;
wynik zwrotu;

// Przeciążona wersja funkcji dodatku ()
Int dodanie (int a, int b, int c)

Int wynik;
wynik = a + b + c;
wynik zwrotu;

;
int main ()

Demoadd d;
int i1 = 10, i2 = 20, i3 = 30, res1, res2;
Res1 = d.dodanie (i1, i2); // dodatek () z 2 parametrami
res2 = d.dodanie (i1, i2, i3); // dodawanie () z 3 parametrami
Cout << "Result = " << res1 << endl;
Cout << "Result = " << res2 << endl;
powrót 0;

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

We wcześniejszych sekcjach tego artykułu dowiedziałeś się, że przeciążenie funkcji można wykonać w oparciu o różnice w typu parametrów. Tutaj przeciążliśmy funkcję „Dodawanie ()” na podstawie typu danych parametru. W pierwszej wersji funkcji dodawania dodamy dwie zmienne typu liczb całkowitych; A w drugiej wersji dodamy dwie zmienne typu pływaka.

#włączać
za pomocą przestrzeni nazw Std;
klasa Demoadd

publiczny:
// pierwsza definicja dodatku ()
int dodanie (int a, int b)

Int wynik;
wynik = a + b;
wynik zwrotu;

// Definicja funkcji przeciążona
Float dodanie (float f, float g)

Wynik pływaka;
wynik = f + g;
wynik zwrotu;

;
int main ()
Demoadd d;
int i1 = 10, i2 = 20, res1;
Float F1 = 10.5, F2 = 20.7, res2;
Res1 = d.dodanie (i1, i2); // dodanie (int a, int b)
res2 = d.dodanie (F1, F2); // Dodaj (float f, płaski g) będzie nazywany
Cout << "Result = " << res1 << endl;
Cout << "Result = " << res2 << endl;
powrót 0;

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

W tym przykładzie funkcja „dodawania ()” jest przeciążona na podstawie różnic w sekwencji listy parametrów. To kolejny sposób na przeciążenie funkcji w C++.

#włączać
za pomocą przestrzeni nazw Std;
klasa Demoadd

publiczny:
// Pierwsza funkcja funkcji dodatkowej ()
Float dodanie (int a, float b)

Wynik pływaka;
wynik = (float) a + b;
wynik zwrotu;

// Przeciążona funkcja Funkcja Funkcji dodawania ()
Float dodanie (float a, int b)

Wynik pływaka;
wynik = a + (float) b;
wynik zwrotu;

;
int main ()

Demoadd d;
int i1 = 10;
Float F1 = 10.5, res1, res2;
Res1 = d.dodanie (i1, f1); // Dodaj (int a, float b) zostanie wywołane
res2 = d.dodanie (f1, i1); // Dodaj (float a, int b) zostanie wywołany
Cout << "Result = " << res1 << endl;
Cout << "Result = " << res2 << endl;
powrót 0;

Wniosek

C ++ to ogólny i elastyczny język programowania, który jest szeroko stosowany w różnych domenach. Ten język programowania obsługuje zarówno polimorfizm w czasie kompilacji, jak i. W tym artykule nauczyłeś się, jak osiągnąć polimorfizm w czasie kompilacji w C ++ przy użyciu funkcji przeciążenia funkcji. Jest to bardzo pomocna funkcja w C ++, która pomaga programistom w pisaniu czytelnego kodu. Może być również pomocne w pisaniu kodu wielokrotnego użytku.