Überladen nur mit verschiedenem Rückgabewert



  • Mit Templates ginge es.



  • Scorcher24 schrieb:

    Mach doch einfach mit Rückgabewert. Juckt doch niemand wenn Du den nicht immer verwendest.
    rya.

    Genau. Wir sind doch hier nicht bei Basic oder Pascal, wo wir noch die schwere Wahl zu treffen hatten, ob wir nun eine Funktion oder eine Prozedur schreiben wollten. 😉



  • Scorcher24 schrieb:

    Mach doch einfach mit Rückgabewert. Juckt doch niemand wenn Du den nicht immer verwendest.

    Das find ich nicht gut, ist nämlich nicht Sinn der Sache. Schließlich liefert eine Funktion ein Resultat, um damit weiterarbeiten zu können. Wenn das Resultat einer Funktion aber nie verarbeitet wird, dann sollte man auch kein Ergebnis zurückliefern.



  • Dweb schrieb:

    Scorcher24 schrieb:

    Mach doch einfach mit Rückgabewert. Juckt doch niemand wenn Du den nicht immer verwendest.

    Das find ich nicht gut, ist nämlich nicht Sinn der Sache. Schließlich liefert eine Funktion ein Resultat, um damit weiterarbeiten zu können. Wenn das Resultat einer Funktion aber nie verarbeitet wird, dann sollte man auch kein Ergebnis zurückliefern.

    Wenn es aber nur manchmal verwendet wird? Hui...

    Und keine Sorge, wenn es nicht weiterverwendet wird, spart der Compiler auch die nötigen Assembler-Befehle zur Rückgabe. Ganz brav.

    MfG SideWinder



  • Dweb schrieb:

    Scorcher24 schrieb:

    Mach doch einfach mit Rückgabewert. Juckt doch niemand wenn Du den nicht immer verwendest.

    Das find ich nicht gut, ist nämlich nicht Sinn der Sache. Schließlich liefert eine Funktion ein Resultat, um damit weiterarbeiten zu können. Wenn das Resultat einer Funktion aber nie verarbeitet wird, dann sollte man auch kein Ergebnis zurückliefern.

    Das ist es doch aber, was überladung_ will. Eine Funktion, deren Rückgabewert er nur im Einzelfall auswertet. Ob man das nun durch templates, Überladung oder sontwas lösen will oder in einer Funktion, ist doch letztlich egal.



  • Dweb schrieb:

    Scorcher24 schrieb:

    Mach doch einfach mit Rückgabewert. Juckt doch niemand wenn Du den nicht immer verwendest.

    Das find ich nicht gut, ist nämlich nicht Sinn der Sache. Schließlich liefert eine Funktion ein Resultat, um damit weiterarbeiten zu können. Wenn das Resultat einer Funktion aber nie verarbeitet wird, dann sollte man auch kein Ergebnis zurückliefern.

    Stört ja nicht. So lange der Returnwert billig zu kopieren ist und "gratis" (oder fast gratis) in der Funktion zu ermitteln ist, wäre es fast schon ein Verbrechen ihn wegzulassen.



  • SideWinder schrieb:

    Und keine Sorge, wenn es nicht weiterverwendet wird, spart der Compiler auch die nötigen Assembler-Befehle zur Rückgabe. Ganz brav.

    Wenn es wirklich so ist, dann wäre mein Problem ja gelöst und ich könnte nur mit einer Funktion auskommen. Kennt sich da noch jemand damit aus? Ich verwende immer ziemlich neue Compiler. VC10 und GCC 4.5



  • überladung_ schrieb:

    SideWinder schrieb:

    Und keine Sorge, wenn es nicht weiterverwendet wird, spart der Compiler auch die nötigen Assembler-Befehle zur Rückgabe. Ganz brav.

    Wenn es wirklich so ist, dann wäre mein Problem ja gelöst und ich könnte nur mit einer Funktion auskommen. Kennt sich da noch jemand damit aus? Ich verwende immer ziemlich neue Compiler. VC10 und GCC 4.5

    Auch wenn es nicht so wäre, würde es doch in der Praxis in den meisten Fällen nichts ausmachen, denke ich. Oder wird deine Funktion in Schleifen ein paar Millionen mal ausgeführt und du kämpfst um jede Nanosekunde?


  • Mod

    Und selbst wenn es zeitkritisch wäre: Es wird wegoptimiert. Was für Anweisungen sollte der Compiler denn generieren wenn der Rückgabewert nicht gebraucht wird? Einfach den Wert an eine leere Speicherstelle kopieren? Wenn ja, an welche? Es gibt einfach nichts was da überhaupt zu tun wäre.



  • SeppJ schrieb:

    Und selbst wenn es zeitkritisch wäre: Es wird wegoptimiert. Was für Anweisungen sollte der Compiler denn generieren wenn der Rückgabewert nicht gebraucht wird? Einfach den Wert an eine leere Speicherstelle kopieren? Wenn ja, an welche? Es gibt einfach nichts was da überhaupt zu tun wäre.

    Das stimmt so nicht ganz.
    Bei Integers/Bools stimmt es wohl für die meisten Compiler, da "einfache" Rückgabewerte meist über ein Register gemacht werden.

    Rückgabewerte die nicht mehr in einem Register Platz haben werden allerdings auch bei Nicht-Verwendung konstruiert und wieder zerstört.


Anmelden zum Antworten