Przeciążanie funkcji w C++

Przeciążanie funkcji to cecha programowania obiektowego, w której dwie lub więcej funkcji może mieć tę samą nazwę, ale różne parametry. Kiedy nazwa funkcji jest przeciążona różnymi zadaniami, nazywa się to przeciążaniem funkcji. W przypadku przeciążania funkcji nazwa funkcji powinna być taka sama, a argumenty powinny być różne. Przeciążanie funkcji można uznać za przykład cechy polimorfizmu w C++.

Jeśli wiele funkcji ma tę samą nazwę, ale parametry funkcji powinny być różne, nazywa się to przeciążaniem funkcji.
Jeśli mamy wykonać tylko jedną operację i posiadanie tej samej nazwy funkcji zwiększa czytelność programu.
Załóżmy, że musisz dodać podane liczby, ale może być dowolna liczba argumentów, jeśli napiszesz funkcję taką jak a(int,int) dla dwóch parametrów i b(int,int,int) dla trzech parametrów, to może być dla Ciebie trudne do zrozumienia zachowania funkcji, ponieważ jej nazwa jest inna.

Parametry powinny spełniać jeden lub więcej niż jeden z następujących warunków przeciążenia funkcji:

  • Parametry powinny mieć inny typ

dodaj(int a, int b)
dodaj (podwójne a, podwójne b)

Poniżej znajduje się realizacja powyższej dyskusji:

C++




#include> using> namespace> std;> void> add(> int> a,> int> b)> {> > cout < <> 'sum = '> < < (a + b);> }> void> add(> double> a,> double> b)> {> > cout < < endl < <> 'sum = '> < < (a + b);> }> // Driver code> int> main()> {> > add(10, 2);> > add(5.3, 6.2);> > return> 0;> }>

Wyjście

sum = 12 sum = 11.5 
  • Parametry powinny mieć inny numer

dodaj(int a, int b)
dodaj(int a, int b, int c)

Poniżej znajduje się realizacja powyższej dyskusji:

C++




#include> using> namespace> std;> void> add(> int> a,> int> b)> {> > cout < <> 'sum = '> < < (a + b);> }> void> add(> int> a,> int> b,> int> c)> {> > cout < < endl < <> 'sum = '> < < (a + b + c);> }> // Driver code> int> main()> {> > add(10, 2);> > add(5, 6, 4);> > return> 0;> }>

Wyjście

sum = 12 sum = 15 
  • Parametry powinny mieć inną sekwencję parametrów.

dodaj(int a, podwójne b)
dodaj(podwójne a, int b)

Poniżej znajduje się realizacja powyższej dyskusji:

C++




#include> using> namespace> std;> void> add(> int> a,> double> b)> {> > cout < <> 'sum = '> < <(a+b);> }> void> add(> double> a,> int> b)> {> > cout <'sum = ' < <(a+b); } // Driver code int main() { add(10,2.5); add(5.5,6); return 0; }>

Wyjście

sum = 12.5 sum = 11.5 

Poniżej znajduje się prosty przykład C++ ilustrujący przeciążenie funkcji.

CPP




#include> using> namespace> std;> void> print(> int> i) {> > cout < <> ' Here is int '> < < i < < endl;> }> void> print(> double> f) {> > cout < <> ' Here is float '> < < f < < endl;> }> void> print(> char> const> *c) {> > cout < <> ' Here is char* '> < < c < < endl;> }> int> main() {> > print(10);> > print(10.10);> > print(> 'ten'> );> > return> 0;> }>

Wyjście

 Here is int 10 Here is float 10.1 Here is char* ten 

C++




#include> using> namespace> std;> void> add(> int> a,> int> b)> {> > cout < <> 'sum ='> < <(a+b);> }> void> add(> int> a,> int> b,> int> c)> {> > cout <'sum =' < <(a+b+c); } main() { add(10,2); add(5,6,4); return 0; }>

C++




#include> using> namespace> std;> void> add(> int> a,> double> b)> {> > cout < <> 'sum ='> < <(a+b);> }> void> add(> double> a,> int> b)> {> > cout <'sum =' < <(a+b); } main() { add(10,2.5); add(5.5,6); return 0; }>

Jak działa Przeciążanie funkcji?

  • Dokładne dopasowanie :- (Nazwa funkcji i parametr)
  • Jeśli A nie znaleziono dokładnego dopasowania:

->Char, Unsigned char i short są promowane do typu int.

-> Float jest promowany do podwójnego

  • Jeśli nie znaleziono dopasowania :

->C++ próbuje znaleźć dopasowanie poprzez standardową konwersję.

  • INNY BŁĄD
  1. Przeciążanie funkcji i typ zwracany
  2. Funkcje, których nie można przeciążać w C++
  3. Przeciążanie funkcji i słowo kluczowe const
  4. Przeciążanie funkcji a przesłanianie funkcji w C++

Najnowsze artykuły na temat przeciążania funkcji w C++