Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

funkcja zwracająca int& i przypisanie

Ostatnio zmodyfikowano 2015-07-27 20:35
Autor Wiadomość
Kondensator
Temat założony przez niniejszego użytkownika
funkcja zwracająca int& i przypisanie
» 2015-07-27 17:53:01
Witam otóż nie rozumiem za bardzo jak to działa, że do funkcji zwracającej referencje(? a może adres sam nie kumam tego) można coś przypisać. Kod wygląda tak
C/C++
#include <iostream>
using namespace std;

class MyClass {
    int x;
public:
    MyClass( int val )
        : x( val )
    { } //to powinno być w poprzedniej linijce ale coś nie działa
    int & get() { return x; }
};

int main() {
    MyClass foo( 10 );
    foo.get() = 15;
    cout << foo.get() << '\n';
   
    return 0;
}
a tu dowód że się kompiluje http://cpp.sh/83r5
P-135299
Monika90
» 2015-07-27 18:32:45
A czy poniższy kod rozumiesz?
C/C++
int main()
{
    int x = 5;
    int & r = x;
    r = 7;
    cout << x << endl;
}
P-135300
Kondensator
Temat założony przez niniejszego użytkownika
» 2015-07-27 20:07:04
Ten co napisałaś rozumiem ale nie rozumiem jak można do wyniku funkcji wpisywać wynik O.o
P-135306
Monika90
» 2015-07-27 20:35:58
To działa tak samo. Typem wyrażenia foo.get() jest int& więc wyrażenie to może stać po lewej stronie operatora =, tak samo jak r którego typem też jest int& (to może jest uproszczenie, ale to powinno ci wystarczyć na razie)

Podobnie będzie tu

std::vector<int> v(10);
v[0] = 1;

Wektor ma przeciążony operator [], ten operator to funkcja która zwraca referencję do elementu.
P-135308
« 1 »
  Strona 1 z 1