Przeciążanie funkcji C ++ (z przykładami)

W tym samouczku dowiemy się o przeciążaniu funkcji w C ++ z przykładami.

W C ++ dwie funkcje mogą mieć tę samą nazwę, jeśli liczba i / lub typ przekazywanych argumentów jest różny.

Te funkcje o tej samej nazwie, ale z różnymi argumentami, nazywane są funkcjami przeciążonymi. Na przykład:

 // same name different arguments int test() ( ) int test(int a) ( ) float test(double a) ( ) int test(int a, double b) ( )

Tutaj wszystkie 4 funkcje są funkcjami przeciążonymi.

Zwróć uwagę, że typy zwracane wszystkich tych 4 funkcji nie są takie same. Przeciążone funkcje mogą mieć różne typy zwracanych wartości lub nie, ale muszą mieć różne argumenty. Na przykład,

 // Error code int test(int a) ( ) double test(int b)( )

Tutaj obie funkcje mają tę samą nazwę, ten sam typ i taką samą liczbę argumentów. Dlatego kompilator zgłosi błąd.

Przeciążanie funkcji przy użyciu różnych typów parametrów

 // Program to compute absolute value // Works for both int and float #include using namespace std; // function with float type parameter float absolute(float var)( if (var < 0.0) var = -var; return var; ) // function with int type parameter int absolute(int var) ( if (var < 0) var = -var; return var; ) int main() ( // call function with int type parameter cout << "Absolute value of -5 = " << absolute(-5) << endl; // call function with float type parameter cout << "Absolute value of 5.5 = " << absolute(5.5f) << endl; return 0; )

Wynik

 Wartość bezwzględna -5 = 5 Wartość bezwzględna 5,5 = 5,5
Działanie przeciążenia dla funkcji bezwzględnej ()

W tym programie przeciążamy absolute()funkcję. Na podstawie typu parametru przekazanego podczas wywołania funkcji wywoływana jest odpowiednia funkcja.

Przeciążanie funkcji przy użyciu innej liczby parametrów

 #include using namespace std; // function with 2 parameters void display(int var1, double var2) ( cout << "Integer number: " << var1; cout << " and double number: " << var2 << endl; ) // function with double type single parameter void display(double var) ( cout << "Double number: " << var << endl; ) // function with int type single parameter void display(int var) ( cout << "Integer number: " << var << endl; ) int main() ( int a = 5; double b = 5.5; // call function with int type parameter display(a); // call function with double type parameter display(b); // call function with 2 parameters display(a, b); return 0; )

Wynik

 Liczba całkowita: 5 Liczba zmiennoprzecinkowa: 5,5 Liczba całkowita: 5 i liczba podwójna: 5,5

Tutaj display()funkcja jest wywoływana trzy razy z różnymi argumentami. W zależności od liczby i typu przekazanych argumentów display()wywoływana jest odpowiednia funkcja.

Działanie przeciążenia funkcji display ()

Typ zwracania wszystkich tych funkcji jest taki sam, ale nie musi tak być w przypadku przeciążenia funkcji.

Uwaga: w C ++ wiele standardowych funkcji bibliotecznych jest przeciążonych. Na przykład, sqrt()funkcja może podjąć double, float, int,itd. Jako parametry. Jest to możliwe, ponieważ sqrt()funkcja jest przeciążona w C ++.

Interesujące artykuły...