if , operator =

0

Cześć :)
Załóżmy taką sytuację:
if( obietk1 = funkcja_zwracająca_obietk_1 )
Czy dobrze myślę, że:
Tu będzie się to odbywać tak:
Ponieważ zdefiniowany operator= zwraca referencję na obiekt to w zależności od tego co jest po prawej stronie będzie to wglądało tak:
Jeżeli prawa strona jest NULL to warunek fałszywy.
else true;
Jeżeli nie jest tak, proszę mnie nakierować ;)

1

bar = foo() ->
if(bar) ->
if((bar = foo())!=null) ->
if(bar = foo())

0

ok, czyli rozumiem, że następuje przypisanie wartości do lewej strony i zbadanie czy jest prawdą?

1

Po przypisaniu nie ma lewej, czy prawej. Jest wartość*.
*w uproszczeniu

0

po przypisaniu zostaje ci to, co zwraca operator przypisania. normalnie powinien zwracać referencję do zmiennej z lewej strony przypisania. (jest to już po przypisaniu, więc jej wartość powinna wynosić tyle co prawa strona).

ale operator= może (nie powinien) zwracać cokolwiek, nawet void. wtedy nie da się użyć składni if (a=b).

1 użytkowników online, w tym zalogowanych: 0, gości: 1