Funktionsüberladung in C++
Beim tatsächlichen Schreiben von Code kann es vorkommen, dass dieselbe Funktionsfunktion unterschiedliche Objekttypen verarbeitet, sodass die Funktion neu implementiert werden muss, was den Code komplizierter macht. Um dieses Problem zu lösen, unterstützt C++ die Funktionsüberladung .
Für ein arithmetisches Summenproblem müssen Sie beispielsweise eine Funktion anpassen, um die eingehenden Daten zu empfangen und zusammenzufassen. Aber woher wissen Sie als unabhängiges Modul, welche Art von Daten der Aufrufer übergeben hat? Es können ganzzahlige Daten sein, natürlich können es Daten vom Gleitkommatyp sein, oder es kann ein ganzzahliger und ein Gleitkommatyp sein (es ist noch nicht bekannt, welcher der ganzzahlige Typ und welcher der Gleitkommatyp ist) und Ein umfassender Ansatz besteht darin, verschiedene formale Parameterfunktionen zu verwenden, für die jeweils eine Funktion definiert sein muss, d. h. zwei int-Typen, zwei double-Typen, der erste int und der zweite double sowie der erste double und der zweite int Zur Implementierung lauten die Namen beispielsweise: Add_double_double(), Add_int_double(), Add_int_int(), Add_double_int() usw. Scheint das nicht verwirrend?
Dann löst das Aufkommen der Funktionsüberladung in C++ dieses Problem sehr gut. Bei der Funktionsüberladung werden zwei oder mehr Funktionen mit demselben Funktionsnamen, aber unterschiedlichen Parametertypen oder -nummern automatisch ausgewählt für verbindliche Anrufe und die Auswahl wird automatisch umgesetzt.
Zum Beispiel im Additionsbeispiel gerade:
#include<iostream>usingnamespacestd;intadd(inta,intb){cout<<(int,int)t;returna+b;}doubleadd(doublea,doubleb){cout<<(doble,double)t;returna+ b ;}doubleadd(doublea,intb){cout<<(double,int)t;returna+b;}doubleadd(inta,doubleb){cout<<(int,double)t;returna+b;}intmain ( ){cout<<add(2,3)<<endl;cout<<add(2.9,15.3)<<endl;cout<<add(10,9.9)<<endl;cout<<add(11.5,5 ) <<endl;return0;}
Die Laufergebnisse sind wie folgt:
Bitte lesen Sie den Code sorgfältig durch, um zu bestätigen, welche Funktion ausgeführt wird, fügen wir eine cout-Ausgabeanweisung innerhalb der Funktion hinzu, um zu unterscheiden, welche Funktion aufgerufen wird.
Jeder muss selbst experimentieren, um den Code zu verstehen!