Witam.
Czytam sobie właśnie "Thinking in c++" i napotkałem jedną rzecz której nie do końca rozumiem i nie potrafie z tekstu książki wywnioskować o co tu chodzi ... albo jestem tępy ;-) albo zbyt dociekliwy :p
Oto kod:
#include <iostream>
#include <cstdlib>
class X
{
int i;
public:
X(int ii = 0);
void modify();
};
X::X(int ii) {i =ii;}
void X::modify()
{
cout << "dokonuję modyfikacji i = " << i<< endl;
i++;
cout << " a teraz i = " << i << endl;
}
X f5()
{
return X();
}
const X f6()
{
return X();
}
void f7(X& x)
{
x.modify();
}
int main()
{
f5() = X(1); // zwracana wartość nie jest stałą
f5().modify();
// ! f7(f5());
// ! f6() = X(1);
// ! f6().modify();
// ! f7(f6());
system("PAUSE");
return 0;
}
nie rozumiem wywołań
f5() = X(1);
f5(). modify();
...
itd ...
przecież kontruktor nic nie zwraca ... funkcja nieprzyjmuje żadnych argumentów ..
nie wiem na czym polega to przypisanie ..
podekreślam że komentarz w kodzie "// zwracana wartość nie jest stałą" nie jest mojego autorstwa .. w końcu nie wiem gdzie to "zwracanie".
jak to załapie to kwestia zwracania stałych przez funkje "wejdzie" mi już łatwo ..
pomoże ktoś ?
z góry dzięki