16.05.2015 Views

Programowanie w C++ Borland Builder - Wyższa Szkoła Informatyki ...

Programowanie w C++ Borland Builder - Wyższa Szkoła Informatyki ...

Programowanie w C++ Borland Builder - Wyższa Szkoła Informatyki ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Jest zatem --> -119.1.94<br />

Testuje nowy operator: -118.1.94<br />

Funkcja operatorowa została napisana w taki sposób, że po<br />

przekroczeniu wartości -31 program będzie wypisywał bzdury. Jako<br />

zadanie domowe - spróbuj zmodyfikować algorytm w taki sposób, by<br />

rozszerzyć zakres poprawnych wartości.<br />

[!!!] Możesz dodawać obiekty minusem.<br />

________________________________________________________________<br />

* Należy tu zwrócić uwagę, że dodawanie obiektów może wykonywać<br />

nie tylko i nie koniecznie operator + . Jeśli zechcesz, możesz<br />

do tego celu zastosować dowolnie wybrany operator (np. -, *<br />

itp.). W celu ułatwienia zrozumienia zapisu (i tylko dlatego)<br />

większość programistów rozbudowuje działanie operatorów zgodnie<br />

z ich pierwotnym zastosowaniem.<br />

* DOWOLNOŚĆ, ALE NIE PEŁNA!<br />

O tyle, o ile działanie operatora może być zmienione, to ilość<br />

argumentów potrzebnych operatorowi pozostaje w <strong>C++</strong> "sztywna"<br />

(patrz przykład z n!).<br />

________________________________________________________________<br />

W bardzo podobny sposób możesz rozbudowywać inne arytmetyczne<br />

operatory dwuargumentowe (*, /, -, itp.) w stosunku także do<br />

innych klas.<br />

OVERLOADING OPERATORÓW JEDNOARGUMENTOWYCH ++ I -- .<br />

Typowe operatory jednoargumentowe to ++ i --. Jako przykładem<br />

posłużymy się problemem zlicznia znaków pobieranych ze<br />

strumienia wejściowego.<br />

Zaczniemy od redefinicji postinkrementacji licznika. Musimy<br />

zastosować funkcję operatorową. Funkcja, chcąc operować na<br />

obiektach musi w stosunku do tych obiektów posiadać status<br />

friend, lub być metodą. Prototyp funkcji operatorowej potrzebnej<br />

do wykonania overloadingu operatora jednoargumentowego ++<br />

wygląda w postaci ogólnej tak:<br />

typ_zwracany nazwa_klasy::operator++(lista argumentów);<br />

Funkcje operatorowe zwracają zwykle wartość zgodną co do typu z<br />

typem obiektów z którymi współpracują. Jeśli identyfikatory b, c<br />

i d reprezentują obiekty, nic nie stoi na przeszkodzie, by stał<br />

się możliwy zapis:<br />

class Klasa<br />

{<br />

...<br />

} x, y, z;<br />

...<br />

- 328-

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!