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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

operacji mnożenia wymaga od operatora * podjęcia różnych<br />

działań:<br />

class Liczba_zespolona x, y, z; z = x * y;<br />

int x, y, z; z = x * y;<br />

Czasem może się zdarzyć, że dla dwu różnych klas działanie<br />

jakiegoś operatora jest identyczne, częściej jednak (i tak<br />

należy się spodziewać) działanie operatora dla każdej klasy<br />

będzie odrębne i unikalne.<br />

Pójdźmy w tym rozumowaniu o krok dalej. Skoro rozszerzenie<br />

obszaru zastosowań jakiegoś operatora na obiekty nowej<br />

(nieznanej wcześniej klasy) wymaga zdefiniowania nowego<br />

algorytmu działania operatora, <strong>C++</strong> będzie potrzebował do tego<br />

celu specjalnych środków, które powinny być łatwo rozpoznawalne.<br />

Do opisu algorytmów służą generalnie w <strong>C++</strong> funkcje i tu Autorzy<br />

nie wprowadzili wyjątku. Zastrzegli jednak dla tych specjalnych<br />

funkcji specjalną nazwę: operator ...();<br />

I tak funkcja precyzująca nowy algorytm dodawania (nowy sposób<br />

działania operatora + ) będzie się nazywać:<br />

operator+();<br />

a np. funkcja określająca nowy algorytm mnożenia (nowy sposób<br />

działania operatora * ) będzie się nazywać:<br />

operator*();<br />

Spróbujmy zastosować taką filozofię w praktyce programowania.<br />

[!!!] NIESTETY NIE WSZYSTKIE OPERATORY MOŻNA ROZBUDOWAĆ.<br />

________________________________________________________________<br />

Są w <strong>C++</strong> operatory, których nie możemy poddać overloadingowi. Są<br />

to:<br />

. :: .* ?:<br />

. operator kropki umożliwia dostęp do pól struktur i obiektów;<br />

:: operator "widoczności-przesłaniania" (ang. scope);<br />

.* wskazanie członka klasy (ang. pointer-to-member);<br />

?: operator warunkowy.<br />

________________________________________________________________<br />

Wszystkie pozostałe operatory możemy poddać overloadingowi i<br />

przypisywać im potrzebne nam działanie.<br />

OVERLOADING OPERATORA [+] (DWUARGUMENTOWEGO).<br />

- 322-

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

Saved successfully!

Ooh no, something went wrong!