@il68: I tak nie śpimy po nocach to przynajmniej jest zajęcie :)
PS. Symfonia C++ to jedna z najlepszych pozycji jakie trzymałem w rękach i mogę ją polecić każdemu programiście C++, niezależnie od jego poziomu doświadczenia.
Ciekawą własnością operator,() jest to, że wbudowana wersja jest zawsze ewaluowana od lewej do prawej. Natomiast wersja przeciążona nie ma określonej kolejności ewaluacji. Można z tego pięknego buga zrobić.
To samo tyczy się zresztą operator&& i operator||.
@trawiasty: Jeśli wie się, co się robi, to przeciążanie jest dobrą alternatywą, (choć mimo to nie polecam). Jeśli wie się, co się robi. W większości przypadków odradzam jakiekolwiek przeciążanie: to -- dla osób nieznających języka (a to -- wybaczcie, tak wierze, jest wiekszosc), jest masakrą; bo jak to? Mnożenie nie mnoży!? ;)
Ja was naprawdę podziwiam. Podchodziłem już kilkanaście razy do C++ i za każdym razem, gdy chciałem cokolwiek napisać na podstawie zdobytej wiedzy, zawsze lipa. Szczerze mówiąc, nawet podstawy Basica się mi nie wbiły do głowy. Może mam humanistyczny mózg, nie wiem.
@kuba10: Bo to niestety trzeba małymi kroczkami - jak w każdym innym języku programowania. Weźmy za przykład książki do nauki - te warte uwagi pozycje mają minimum 500 stron. "Thinking in C++" (600+), "Thinking in Java" (900+), "Symfonia C++" (1200+). Programming to zabawa dla pasjonatów, którzy lubią dociekać dlaczego coś działa i godzinami czytać manuale (choć w przypadku programowania jest to walka z dociekaniem dlaczego nie działa ;P). Nad jednym
Mnie zawsze zastanawiało jak połączyć operator [ ] i = żeby można było odwoływać się tak zmienna[index] (tu zwraca wartość) i jednocześnie zmienna[index]=wartość. Zawsze jak próbowałem to reagował tylko na operator [ ] .
Aaa tam, ciekawy operator. Ciekawsze są operacje na tablicach, na przykład zamiast standardowego nazwa[index] można używać index[nazwa], bo i tak zostanie to zamienione na *((nazwa)+(index)). C jest świetnym językiem (moim ulubionym zresztą), lecz gdy piszemy samemu od początku do końca. Powiesiłbym się, gdybym miał kończyć w C program po kimś.
Kiedyś bawiłem się w "przekombinowywanie" kodu, polecam, jeśli ktoś nie czuje się pewnie ze wskaźnikami
Komentarze (39)
najlepsze
nie ma to jak prosic sie o klopoty i noce debuggowania.
PS. Symfonia C++ to jedna z najlepszych pozycji jakie trzymałem w rękach i mogę ją polecić każdemu programiście C++, niezależnie od jego poziomu doświadczenia.
To samo tyczy się zresztą operator&& i operator||.
std::vector v = 0,1,2,3,4,5,6,7,8,9;
Więc to, że wartością wyrażenia jest "ostatni element", nie jest prawdą uniwersalną.
Co znaczy że wie, że można przeciążać inne operatory
Kiedyś bawiłem się w "przekombinowywanie" kodu, polecam, jeśli ktoś nie czuje się pewnie ze wskaźnikami
http://ideone.com/uCeP1