[C++] Was bedeutet das & hinter einem Variablennamen?

  • Entweder verschluckt Google Suchbegriffe wie "&", "and" und "und", oder ich bin zu alt für Suchmaschinen.

    Ich bin letztens auf folgende Syntax bei der Übergabe von Parametern an eine Funktion gestoßen:
    float machwas(const klasse& bla)

    Ich kenne den &-Operator nur im Sinne von "Adresse der Variablen x" wenn man ihn in der Syntax "&x" benutzt.
    Aber wieso setzt man hier ein & hinter eine Klasse? Konnte in meinem Lehrbuch nichts finden.

  • Wirklich eine Funktions-Definition die so aussieht: float machwas(const klasse& bla) ?
    Weil das macht in meinem beschränkten C++-Wissen keinen Sinn, aber

    Ich kenne den &-Operator jenseits von Adressen nur als als binäre Verundung.


    int i = 12 & 10; // = 8/* weil 1100 (12) & 1010 (10) = 1000 (8) */

    Ich Idiot. Bei C++ ist Datentyp& eine Referenz des Datentypen. Heisst in deinem Beispiel, dass innerhalb von machwas() die Variable bla nur eine Referenz auf ein Objekt der Klasse klasse ist, nicht eine Kopie. Rufst du machwas(myBla) auf, dann werden alle Veränderungen, die machwas() an bla ausführt, in myBla gemacht.

    Siehe: http://en.wikipedia.org/wiki/Reference_%28C%2B%2B%29

    Einmal editiert, zuletzt von gandro (6. Dezember 2010 um 17:37)

  • das const & ist ein konstrukt, was die sicherheit von übergabe by value (kann im hauptprogramm nich geändert werden, weil const) und performance von übergabe by reference (keine kopie, da &) verbindet. insbesondere letzteres ist bei Objekten halt durchaus ein schlagkräftiges argument, weil sowas zu kopieren sehr viel aufwändiger ist als nur nen einfachen integer

    EDIT: bezüglich der platzierung vom & kann ich spontan zu genau diesem fall nix sagen, aber ich kenns vom *, dass es wurst ist, ob man int* bla oder int *bla schreibt

    Einmal editiert, zuletzt von oreissig (6. Dezember 2010 um 17:38)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!