if , operator =

MI
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 9 lat
  • Postów:199
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ć ;)

spartanPAGE
  • Rejestracja:prawie 12 lat
  • Ostatnio:4 dni
1

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

edytowany 1x, ostatnio: spartanPAGE
MI
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 9 lat
  • Postów:199
0

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

spartanPAGE
  • Rejestracja:prawie 12 lat
  • Ostatnio:4 dni
1

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

edytowany 1x, ostatnio: spartanPAGE
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:dzień
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).

edytowany 1x, ostatnio: Azarien

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.