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

Kiedy funkcje są wywoływane?

Ostatnio zmodyfikowano 2014-10-15 14:05
Autor Wiadomość
Monika90
» 2014-10-15 08:59:26
cout << "Obiekt (...)\n" <<( fun_druga() ).opis();

To co tu mamy to jest po prostu operator << którego lewy i prawy argument to są wyrażenia, które mają jakieś efekty uboczne (zapis do cout). Nie ma w języku żadnej reguły mówiącej które z tych podwyrażeń ma być obliczone jako pierwsze (włączając w to związane z wartościowaniem wyrażenia efekty uboczne). W ogólnym przypadku mogłyby być nawet obliczane jednocześnie. Tutaj nie będą jednocześnie, bo są to wywołania funkcji, a funkcje są wywoływane zawsze w jakieś kolejności choć nie wiadomo w jakiej.

Więc równie dobrze wynikiem może być to
[string wypisany w fun_druga()]\n
Obiekt (...)\n[wartosc zwrocona przez opis()]\n
albo to
Obiekt (...)\n[string wypisany w fun_druga()]\n[wartosc zwrocona przez opis()]\n

A jeszcze dodam, że to że to są operatory << nie ma żadnego znaczenia. Możemy zastapić operator << funkcją print:
print( print( cout, "Obiekt (...)\n" ), fun_druga().opis() );

niczego to nie zmienia.
P-118503
akwes
» 2014-10-15 14:05:57
Ok, dzięki za wyjaśnienie. Zapamiętałem błędną informację z książki i nigdy jej nie zweryfikowałem.

P-118529
1 « 2 »
Poprzednia strona Strona 2 z 2