Jedną z tych rzeczy jest właśnie przeładowanie operatorów.
Składnia
Przeładowanie można implementować na 2 sposoby:- poprzez funkcję zaprzyjaźnioną
- metodę będącą składową klasy
Pisząc a@b w pierwszym wypadku wywołanie będzie równoważne do:
operator@(a,b);
Natomiast w drugim będziemy wołać metodę na rzecz któregoś obiektu:
a.operator@(b);
Przykład:
Powiedzmy, że chcemy sobie przeładować abstrakcyjny operator "@".Czyli mają naszą klasę typ_arg i chcemy móc korzystać z wyrażenia "a@b"
(tak, żeby było to wyrażenie przemienne, tzn. a@b == b@a).
W klasie musimy sobie zaprzyjaźnić ten operator w następujący sposób.
friend typ_arg operator@(const typ_arg& arg1,const typ_arg& arg2);
Przeładowywanie operatora wypisywanie strumieniowego
Znajduje się w pliku nagłówkowym <ostream> (tym samym w <iostream>).friend std::ostream& operator<<(std::ostream&, const typ_arg&);
operator << zawsze pobiera jako argument strumień wyjściowy a potem go zwraca, kiedy skończy go modyfikować w odpowiedni sposób.