next up previous contents index
Next: Vermeide ``downcasts'' Up: 50 Ways to Improve Previous: Eine geerbte nicht-virtuelle Funktion

Geerbte Default-Parameterwerte nie ändern

 

    #include <iostream.h>
    enum preis { hoch=30000, niedrig=300};
    class automobil
    { public:
      virtual void 
        finanziere(int preis = hoch) = 0;
      };
    class alte_ente : public automobil
    { public:
        void finanziere( int preis = niedrig)
        { cout  << preis << endl;
        } 
    };
    
    int main()
    { automobil *ap = new alte_ente;
      ap->finanziere();
    }

schreibt: 30000.

Der Grund:

Die Funktion wird zwar dynamisch gebunden, der Default-Parameter jedoch statisch.


next up previous contents index
Next: Vermeide ``downcasts'' Up: 50 Ways to Improve Previous: Eine geerbte nicht-virtuelle Funktion

Peter Pfahler, 1997