Funktionszeiger in C++

Funktionszeiger in C++

Funktionszeiger in C++ mit Beispielen:

In diesem Artikel werde ich Funktionszeiger in C++ diskutieren Sprache mit Beispielen. Bitte lesen Sie unsere vorherigen Artikel, in denen wir Referenzen in C++ besprochen haben mit Beispielen.

Funktionszeiger in C++

Wir wissen gut, dass wir einen Zeiger auf jeden Datentyp haben können. Für jeden primitiven Datentyp können wir einen Zeiger vom Typ class haben. Können wir nun einen Zeiger auf eine Funktion haben? Ja.

void display(){
    cout << "Hello"'
}
int main(){
    void (*fp)();
    fp = display;
    (*fp)();
}

Wir haben hier eine Funktion ‚display()‘ und einige Anweisungen in der Hauptfunktion. Die Funktion „display“ übernimmt keine Parameter und gibt nichts zurück. Nun wollen wir die Funktion „display“ aus der main-Funktion aufrufen. Wenn wir diese Funktion aufrufen müssen, können wir einfach „display ()“ in die Hauptfunktion schreiben und „Hello“ wird angezeigt.

Diese Funktion wird aufgerufen und „Hallo“ wird angezeigt und die Steuerung kehrt zurück. Wir wissen das, können wir jetzt, anstatt den Namen direkt aufzurufen, einen Zeiger auf eine Funktion verwenden? Ja. Also lass uns das sehen.

Wir werden einen Zeiger auf eine Funktion definieren und diesen Zeiger ‚fp‘ nennen. Wir werden es als „void (*fp)();“ schreiben. Der Rückgabetyp ist „void“ und es gibt keine Parameter, also lassen Sie die Klammer leer. Das ist also die Methode, einen Zeiger auf eine Funktion zu deklarieren, und wenn Sie einen Zeiger auf eine Funktion deklariert haben, muss er in Klammern stehen, d. h. (*fp), sonst ist er kein Zeiger auf eine Funktion.

Nach der Deklaration eines Zeigers wird uns „fp“ als „fp =display“ zu „display“ zugewiesen. Diesem wird nun der Name einer Funktion zugewiesen. Die Adresse dieser Funktion wird also in diesem Zeiger gespeichert. Dies ist die Initialisierung des Zeigers auf eine Funktion. Wie nennt man das jetzt? Wir können es als „(*fp)() bezeichnen ’.

So kann ein Zeiger einer Funktion zugewiesen werden. Sehen wir uns nun ein weiteres Beispiel an.

int max(int x, int y){
    return x > y ? x : y;
}
int min(int x, int y){
    return x < y ? x : y;
}

Also haben wir hier zwei Funktionen ‚max‘ und ‚min‘. Beide nehmen zwei Ganzzahlen als Parameter und „max“ dient zum Finden des Maximums von zwei Ganzzahlen und „min“ zum Finden des Minimums von zwei Ganzzahlen.

int main(){
    int (*fp)(int, int);
    fp = max;
    (*fp)(10, 5);
    fp = min;
    (*fp)(10, 5);
}

Nun haben wir innerhalb der Hauptfunktion einen Zeiger deklariert, der als „int (*fp)(int, int) fungiert ’, da unsere ‘max’- und ‘min’-Funktion zwei ganze Zahlen als Parameter verwendet, also müssen wir diesen Prototyp zum Zeitpunkt der Deklaration eines Zeigers auf die Funktion definieren.

Als nächstes weisen wir „fp“ „max“ zu. Hier enthält „fp“ die Adresse der „max“-Funktion. Und in der nächsten Zeile nennen wir die „max“-Funktion als „(*fp)(10, 5) ’. Hier haben wir ‚10‘ und ‚5‘ als Parameter angegeben.

Als Nächstes haben wir „fp“ so geändert, dass es „min“ zugewiesen wurde. Hier enthält „fp“ die Adresse der „min“-Funktion. Dann nennen wir die ‚min‘-Funktion als ‚(*fp)(10, 5) ’.

Also rufen wir eine andere Funktion auf, indem wir unseren Zeiger auf verschiedene Funktionen zeigen. Dies ist derselbe Name für unterschiedliche Funktionen oder unterschiedliche Operationen. Das ist genau wie Polymorphismus. Beim Funktionsüberschreiben wird intern ein Funktionszeiger verwendet, um einen Laufzeitpolymorphismus unter Verwendung des Funktionsüberschreibens zu erreichen. Das bedeutet also, dass ein Funktionszeiger auf jede Funktion zeigen kann, die die gleiche Signatur hat.

Hier in diesem Artikel versuche ich, Funktionszeiger in C++ zu erklären Sprache mit Beispielen. Ich hoffe, Ihnen gefällt dieser Funktionszeiger in C++ mit Beispielartikel. Ich hätte gerne Ihr Feedback. Bitte posten Sie Ihr Feedback, Ihre Fragen oder Kommentare zu diesem Artikel.