operator new mit Parameterliste überladen?



  • Hi Leute!
    Ich habe ein kleineres Problemchen mit meinem Speichermanagement.
    Und zwar:
    Das Überladen des new Operators, bei Klassen, die im Ctor Parameter erwarten.
    Wie geht das?
    Das ganze muss dazu noch Polymorphy vertragen können und wenn nötig nur in der Basisklasse definiert sein.

    Kennt sich da jemand aus?



  • Genauso wie bei Klassen, die keine Parameter im Konstruktor erwarten.

    class bar
    {
      /*...*/
      public:
      bar(long ago);
      void* operator new(size_t);
      void operator delete(void*);
    };
    

    Wenn mich nicht alles täuscht wird operator new() vererbt. Polymoph wird er eh nie aufgerufen... Für operator delete musst du selbst sorgen. Auf die Parameter des Konstruktors kannst du im operator new() nicht zugreifen, nur eigene zusätzliche Parameter zur Größe definieren.
    geloescht



  • Sorry!
    Denkfehler meinerseits!



  • ein paar Kleinigkeiten:
    - operator new und delete static machen.
    - zu operator new und delete sollte man immer auch gleich new[] und delete[] mitliefern, wäre nicht grade konsistent wenn der Speicherplatz für Einzelobjekte aus dem eigenen Speichermanagement kommt, der für Arrays aber nicht.
    - eventuell überlegen, ob man placement new (operator new(size_t, void*) ) auch implementieren sollte.



  • Danke für die Tips!


Anmelden zum Antworten