C++/Przeciążanie operatorów: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Linia 199:
W ogólności te operatory nie muszą wykonywać dokładnie tych samych czynności. Można sobie wyobrazić przykład w którym operator do zapisu zapisuje coś do tablicy, a w przypadku braku miejsca alokuje dodatkową pamięć. Operator stały nie będzie posiadał takiej funkcjonalności ponieważ nie może zmieniać obiektu na rzecz którego został wywołany.
 
=== Operator "()" ===
 
Ten operator służy do tworzenia tzw. funktorów czyli klas które naśladują funkcje:
<source lang="cpp">
class Foo
{
public:
int operator() (int a, int b) {
return (a+b);
}
};
</source>
Nie jest to może najmądrzejszy przykład gdyż jest dostępny do przeciążania operator "+" ale oddaje zasadę działania. Trzeba zaznaczyć że ten operator może zwracać '''dowolną wartość''' oraz przyjmować '''dowolną liczbę parametrów dowolnego typu'''. Niestety musi być zadeklarownay jako niestatyczna metoda klasy (gdyż inne operatory które mogą być statyczne zwracają obiekt (<code lang=cpp>&Foo operator</code>...), choć możliwość udawania przez klasę funkcji z pewnością to wynagrodzi.
 
<noinclude>