sizeof(Funktionszeiger) == 8



  • Hallo,

    Gegeben seien zwei Funktionszeiger pfa und pfb. pfa zeigt auf eine ungebundene Funktion, pfb zeigt auf eine Funktion innerhalb einer Klasse.

    sizeof(pfa) == 4, was nicht weiter überrascht. Ist halt ein Zeiger.
    sizeof(pfb) == 8 und das kann ich mir nicht erklären.

    Was wird in einem Funktionszeiger auf eine Klassenfunktion denn noch gespeichert ausser dem Zeiger auf die Funktion?

    (Compiler: gcc)



  • Ich zitiere mal Modernes C+ Design:

    Ein Pointer auf eine Member-Funktion belegt nicht wie ein Pointer auf eine Funktion nur vier Byte. Pointer auf Member-Funktionen sind vielmehr gekennzeichnete Einheiten, bei denen die mehrfache virtuelle Vererbung und virtuelle oder nicht virtuelle Funktionen eine Rolle spielen.

    (Seite 176)



  • KPC schrieb:

    Ich zitiere mal Modernes C+ Design:

    Ein Pointer auf eine Member-Funktion belegt nicht wie ein Pointer auf eine Funktion nur vier Byte. Pointer auf Member-Funktionen sind vielmehr gekennzeichnete Einheiten, bei denen die mehrfache virtuelle Vererbung und virtuelle oder nicht virtuelle Funktionen eine Rolle spielen.

    (Seite 176)

    Vielen Dank, hat sich damit geklärt!


Anmelden zum Antworten