operatro überladen



  • hi,
    wenn ich einen operrator überlade
    ich hab mir da ein paar beispeilcods angeschaut
    warum geb ich das manchmal als referenz zurück und manchmal nicht

    zb
    float &operator[](int index);
    float operator[](int index) const;

    schonmal vielen dank für eure hilfe



  • wenn du es als ref zurückgibst, kannst du den wert ändern:

    test[42] = 5.32f;

    wenn du die methode const machst, kannst du garnichts ändern. eine refernez
    wäre undnötig jedoch nicht falsch



  • ok schonmal danke

    und wo wäre der unterschied wenn ich dann sowas schriebe

    float &operator[](int index);
    float operator[](int index);



  • Bei der ersten Zeile gibst du eine Referenz zurück, also bezieht man sich von aussen direkt auf den eigentlichen Wert in der Klasse. Bei der zweiten hingegen kopierst du den Wert und gibst einen neuen float zurück. Dass die Funktion nicht const -qualifiziert ist, macht eigentlich nicht viel Sinn, wenn man von einem üblichen Getter ausgeht.


Anmelden zum Antworten