pętla w książce - adres do wskażnika

0

Witam,
przerabiam książkę o c++ i zastanawia mnie jedna rzecz w niej zawarta, chodzi o ten kawałek kodu:

const Stock *top = &stocks[0]
for (st = 0; st < STKS; st++)
      top = &top->topval(stocks[st]);
 

pętla znajduje największą wartość, metoda topval porównuje dwia obiekty i zwraca ten z większą wartością. chodzi mi o ten zapis:

&top->topval(stocks[st])

jak go rozumieć ? nie powinno być:

top->topval(stocks[st])

lub:

(*top).topval(stocks[st])

??
Z góry dziękuję za pomoc : )

2
top->topval(stocks[st])

zwróc większą liczbę z *top oraz stocks[st]

&top->topval(stocks[st])

bierz adres z tej zwróconej większej liczby

top = &top->topval(stocks[st]);

przypisz do top adres tej zwróconej większej liczby

W zależności od implementacji topval() ten kod może być prawidłowy lub bardzo zepsuty. Jeżeli zwraca referencje do (istniejących) obiektów, to wszystko ok, ale jeśli zwraca obiekty, czyli tymczasowe kopie istniejących obiektów, to top potencjalnie będzie wskazywać na coś co już nie istnieje.

0

ahh no tak teraz to ma sens, czyli operator & ma niższy piorytet i ten zapis jest równoważny z :

 &(top->topval(stocks[st])) 

tak ? Jak dobrze zrozumiałem to dziękuję bardzo za pomoc : )

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