Referenz Rückgabewert int



  • Hallo,
    wäre das legitim:

    int test (int &ref) {
    return ref;
    }
    


  • Ja, ich denke schon!

    Wieso denn nicht?



  • Da wird eine Kopie des übergebenen Objektes zurückgegeben. Das ist kein Problem.



  • drakon schrieb:

    Da wird eine Kopie des übergebenen Objektes zurückgegeben. Das ist kein Problem.

    int &test (int &ref) {
    return ref;
    }
    

    Das wäre aber auch kein Problem.



  • Habe ich das Gegenteil behauptet?



  • drakon schrieb:

    Habe ich das Gegenteil behauptet?

    Nein, aber man hätte es so missverstehen können, dass die Rückgabe als Referenz nicht möglich oder unüblich sei.



  • TyRoXx schrieb:

    drakon schrieb:

    Habe ich das Gegenteil behauptet?

    Nein, aber man hätte es so missverstehen können, dass die Rückgabe als Referenz nicht möglich oder unüblich sei.

    Ich denke es ist unüblich eine Referenz auf ein übergebenes Objekt zurück zu geben.. Und es ist böse eine Referenz auf ein lokales Objekt zurück zu geben..

    Mir fällt durchaus ein Anwendungsgebiet ein, wo man die Rückgabe eines Parameters per Referenz haben möchte, aber naja. So oft wird das imo nicht wirklich gebraucht.

    Sowas macht sicher Sinn:

    foo& bigger (foo& f1, foo& f2)
    {
     if ( f1 /*bigger*/ f2 )
      return f1;
     else
      return f2;
    }
    


  • Ich denke es ist unüblich eine Referenz auf ein übergebenes Objekt zurück zu geben

    ostream& operator<<(ostream& os, const myclass& myobject)
    {
      // ...
      return os;
    }
    

    🙂



  • drakon schrieb:

    Ich denke es ist unüblich eine Referenz auf ein übergebenes Objekt zurück zu geben.. Und es ist böse eine Referenz auf ein lokales Objekt zurück zu geben..

    Aus Sicht der Funktion ist das doch gar kein lokales Objekt. Es muss vor dem Funktionsaufruf erstellt worden sein und existiert danach weiter.

    void funktion(int &r) {
    return r;
    }
    
    funktion(5); //geht gar nicht
    
    int i = 5;
    int &boeseReferenz = funktion(i); //kein Problem
    


  • Th69 schrieb:

    ...

    Ok. 1:0 für dich. An das habe ich gar nicht gedacht. (ist ja eigentlich nur da, damit man das ganze so schön verketten kann)
    Obwohl üblich würde ich das nicht gerade nennen. 😉

    @TyRoXx:
    Das war nur eine Randbemerkung, die einfach gesagt werden sollte. Nicht das ich das gerade hier iregendwo gesehen hätte. Einfach nur, dass niemand auf diese Idee kommt, dass man das auch machen könnte. 😉


Anmelden zum Antworten