ALG30

ALG30



330


Dodatek A

Complat x), to dostęp do jego pól odbywałby się za pomocą notacji z kropką. Przykład: x.Re.

complcx.cpp

void Complex::wypi3Z()

<

cout << Re << "+j*" « im « endl;

I

Język C++ umożliwia łatwe przedefilowanie znaczenia operatorów standardowych, tak aby operacje na obiektach uczynić możliwie najprostszymi. Ponieważ liczby zespolone nieco inaczej dodaje się niż te „zwykłe”, celowe będzie ukrycie sposobu dodawania w funkcji, a w świecie zewnętrznym pozostawienie do tego celu operatora +. Najwygodniejszym sposobem przedefiniowania operatora dwuargumentowego jest użycie do tego celu tzw. funkcji zaprzyjaźnionej; jest to specjalna funkcja, która nie będąc metodą" pewnej określonej klasy, może operować obiektami należącymi do niej. Dotyczy to również dostępu do pól prywatnych!

Nasza funkcja zaprzyjaźniona ma następujące działanie: dwa obiekty * i y są przekazywane jako parametry. Odczytując wartości ich pól Re i Im, możliwe jest skonstruowanie nowego obiektu klasy Complex wg prostego wzoru: (a+j*b)+(c+j*d)= (a+cj+(h+d) *j. Jest to matematyka elementarna, zawarta w' programie nauczania szkoły średniej. Po utworzeniu, nowy obiekt jest zwracany przez referencję - czyli jako w pełni adresowalny obiekt, który może być przypisany innemu obiektowi, na którego rzecz może być aktywowana jakaś metoda klasy Complex etc. Prawidłowe będą zatem instrukcje:

Complex x(1,2),y(Z,3),c; // deklaracje obiektów c=x+y;    // c-<l+2)ij*(2+3)

Popatrzmy na listing funkcji +:

Complexs operator +(Complex x,Complex y)

(

double tmp_Re-x.Czesc_Rzecz()+y.Czesc RzeczO; double tmp_Im=x.Czesc_Uroj<) +y.Czesc_Uroj<);

Complex *-NowyObiekt“new Complex(tmp_Re,tmp lm); return (‘NowyObiekt);

>

Warto zwrócić uwagę na fakt, iż obiekt NowyObiekt jest tworzony w sposób jawny przy pomocy new. Tego typu postępowanie zapewnia nam, że zwrócona referencja będzie się odnosiła do obiektu trwałego (zwykła instrukcja Complex NowyObiekt użyta wewnątrz bloku stworzyłaby obiekt tymczasowy, który zniknąłby po wykonaniu instrukcji zawartych we wspomnianym bloku).

" W konsekwencji nie mogą być wywoływane za pomocą notacji „z kropką”!


Wyszukiwarka

Podobne podstrony:
DSC02053 Przenośniki cięgnowe są to przenośniki, w których przenoszenie materiału odbywa się za pomo
Zdolność do czynności prawnych to prawo do kształtowania własnej sytuacji prawnej za pomocą oświadcz
Centrum Informatyki UŁ Dostęp do testu końcowego odbywa się po załogowaniu na platformę i wpisaniu
Zmienna strumieniowa użyta do wprowadzania danych z pliku jest typu ifstream. Otwarcie pliku odbywa
Ruch prowadnic PI i P2 odbywa się za pomocą przekładni o zmiennym przełożeniu 1:2.373 do 2.373:1. Pr
DSCN2103 (2) Rozmnażanie płciowe odbywa się za pomocą komórek rozrodczych, kiórc są zdolno do wytwor
ingarden5 14 Koman Ingarden 7. teorii itsteła tUeroe kiego 15 na „wielofazowo^^? dzieła. T
skanuj0008 • Antagonizm kompetycyjny (konkurencyjny) - konkurencja to dostęp do tego samego receptor
5 (643) 14 Roman Ingarden na „wielofazowość” dzieła. To należy do jego istoty14, ale jej nie wyczerp
Kursy E-book to: Dostęp do wszystkich zasobów w każdej chwili, w wygodny sposób! /
Mentorowe Inspiracje to dostęp do darmowej wiedzy przekazywanej w nietuzinkowy sposób przez
002 (37) Antagonizm kompetycyjny (konkurencyjny) - konkurencja to dostęp do tego samego receptora mi
zest2 2 7.    Proton wstrzelony do pola magnetycznego prostopadle do jego linii będzi

więcej podobnych podstron