Vererbung und Überschreibung



  • Hallo,

    wie kann man festlegen, ob eine Methode von Child-Klasse überschrieben worden ist, oder nicht?

    habe es so probiert:

    if(&MyBase::Proc == &MySubCall::Proc)
        cout<<"mybase und mysubcall"<<endl;
    if(&MyBase::Proc == &MyCall::Proc)
        cout<<"mybase und mycall"<<endl;
    

    MyBase ist klar, die Oberklasse von MySubCall und MyCall. MyCall überschreibt Proc von MyBase. MySubCall überschreibt nicht.

    MfG



  • Kurze Suche im Standard ergibt 5.10§2:

    [...]if either [operand] is a pointer to a virtual member function, the result [of the equality comparison] is unspecified

    Ist auch klar, da ein Member-Pointer nicht unbedingt eine Adresse enthalten muss, sondern z.B. nur den Index in die vtbl, und dann wären Überschreibungen derselben virtuellen Funktion einander gleich.



  • schade 😞 ... dann muss ich doch manuel festlegen, was überschrieben wurde ...


Anmelden zum Antworten