Werden Objekte per return auf den Stack geworfen ?



  • Hallo,

    ich bin im Moment nicht mehr ganz auf dem laufenden was C++ betrifft, ich habe vor ein paar Jahren mal im Bjarne gelesen, dass man solche Konstrukte eher meiden sollte weil sie auf den Stack kopiert werden:

    Matrix4x4 Matrix4x4::multiply(Matrix4x4& m) {
      Matrix4x4 result;
    
      result.x1 = ... //Hier kommt die Multiplikation
    
      return result; //Die Frage: Wird result hier auf den Stack geworfen ?
    }
    

    Mit sowas kann man sich ja ganz schnell die Perfomance verhageln...
    Ich habe bisher immer eine result-Referenz mitübergeben um das return
    zu vermeiden - ist natürlich nicht so hübsch wie die Lösung oben.

    Allerdings habe ich mir jetzt sagen lassen, dass moderne Compiler mit solchen Konstrukten absolut kein Problem haben. Stimmt das ?

    Danke,
    Frederick


  • Mod

    Frederick schrieb:

    Allerdings habe ich mir jetzt sagen lassen, dass moderne Compiler mit solchen Konstrukten absolut kein Problem haben. Stimmt das ?

    ja



  • sehr gut 😉


Anmelden zum Antworten